程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 利用PHP的OOP特性實現數據保護

利用PHP的OOP特性實現數據保護

編輯:PHP綜合

在PHP 4中,聲明變量通常使用var,而在PHP 5中,可使用面向對象編程(OOP)的特性來自定義數據 的可見性--即可訪問性,可見性在此與變量作用域非常類似,但提供了更好的控制機制,有以下三種類型 的可見性修飾符:

Public(默認)--變量可在全局范圍內訪問或修改。

Protected--變量只能在類本身及直接派生(使用extends語句)類內訪問或修改。

Private--變量只能在類內部訪問或修改。

與接口實現類似,在程序中違反這些規則將會導致嚴重的錯誤;且與接口類似的是,它們的存在純粹 是為了方便程序員。但這並不意味著可以忽略它們,指定某個類成員變量的可見性,可保護對象內的數據 免受外界影響。

假設有一個MySqlDB類,一個$link變量在其中聲明為private,這意味著這個變量只能從對象內部使用 $this變量訪問,這防止了類外其他對象或函數的意外覆蓋,在此,我們將使用可見性特性幫助我們創建 一個query對象。

你可以把query當作一個單獨的實體,它可以執行,並且返回結果。一些數據庫系統也具有存儲過程, 存儲過程與函數很相似,它們存儲查詢語句,並在調用時接受相應的參數,但MySQL在5.1版本之前並沒有 提供類似功能,某些其他類型的數據庫管理系統也沒有。

在本文中,將把上述兩個特性結合進示例的query對象中,示例將模擬一個基本的存儲過程,並在內部 保存結果指針。目前,重點是從對象中執行query,在此可以調用MySqlDB對象的query()函數。

可在query對象中定義如下的public函數:

__construct()--構造函數接受一個包含了實現DB接口對象實例引用的參數。

prepare()--函數prepare()初始化query的存儲過程。它可能包含一個或多個有限的占位符,而其將會 作為參數傳遞給execute()函數。占位符定義為與參數個數有關的一個冒號緊跟一個整數及與參數類型有 關的一個字母。

包含占位符的一個簡單的query看起來像以下這樣:

SELECT col1,col2 FROM table_name WHERE col1=:1I

execute()--函數execute()將執行query。如果它被prepare()函數過早地初始化為一個存儲過程,任 何傳遞進來的參數都會被作為存儲過程的執行參數,否則,第一個參數只會被作為查詢文本。函數 execute()將返回執行查詢後的結果。

compile()--函數compile()與函數execute()類似,實際上,query並沒有執行,而是替換查詢字符串 中所有占位符,接受存儲過程的參數,並返回query的編譯版本。

受保護的成員

正如上面所提到的,可見性的概念可用於隱藏對象的內部工作,保護內部工作所需的數據完整性。前 面已經解釋,query返回的結果指針將會保存為protected屬性,在此使用保護成員是因為從query對象派 生出來的特定數據庫query對象可能會重載某些核心功能。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved