在PHP 中聲明變量通常使用var而在PHP 中可使用面向對象編程(OOP)的特性來自定義數據的可見性即可訪問性可見性在此與變量作用域非常類似但提供了更好的控制機制有以下三種類型的可見性修飾符
Public(默認)變量可在全局范圍內訪問或修改
Protected變量只能在類本身及直接派生(使用extends語句)類內訪問或修改
Private變量只能在類內部訪問或修改
與接口實現類似在程序中違反這些規則將會導致嚴重的錯誤且與接口類似的是它們的存在純粹是為了方便程序員但這並不意味著可以忽略它們指定某個類成員變量的可見性可保護對象內的數據免受外界影響
假設有一個MySqlDB類一個$link變量在其中聲明為private這意味著這個變量只能從對象內部使用$this變量訪問這防止了類外其他對象或函數的意外覆蓋在此我們將使用可見性特性幫助我們創建一個query對象
你可以把query當作一個單獨的實體它可以執行並且返回結果一些數據庫系統也具有存儲過程存儲過程與函數很相似它們存儲查詢語句並在調用時接受相應的參數但MySQL在版本之前並沒有提供類似功能某些其他類型的數據庫管理系統也沒有
在本文中將把上述兩個特性結合進示例的query對象中示例將模擬一個基本的存儲過程並在內部保存結果指針目前重點是從對象中執行query在此可以調用MySqlDB對象的query()函數
可在query對象中定義如下的public函數
__construct()構造函數接受一個包含了實現DB接口對象實例引用的參數
prepare()函數prepare()初始化query的存儲過程它可能包含一個或多個有限的占位符而其將會作為參數傳遞給execute()函數占位符定義為與參數個數有關的一個冒號緊跟一個整數及與參數類型有關的一個字母
包含占位符的一個簡單的query看起來像以下這樣
SELECT col
col
FROM table_name WHERE col
=:
I
execute()函數execute()將執行query如果它被prepare()函數過早地初始化為一個存儲過程任何傳遞進來的參數都會被作為存儲過程的執行參數否則第一個參數只會被作為查詢文本函數execute()將返回執行查詢後的結果
compile()函數compile()與函數execute()類似實際上query並沒有執行而是替換查詢字符串中所有占位符接受存儲過程的參數並返回query的編譯版本
From:http://tw.wingwit.com/Article/program/PHP/201311/21190.html