php所提供的"重載"(overloading)是指動態地"創建"類屬性和方法。我們是通過魔術方法(magic methods)來實現的。
當調用當前環境下未定義或不可見的類屬性或方法時,重載方法會被調用。
NOTE:
1.所有的重載方法都必須被聲明為public。
2.這些魔術方法的參數都不能通過引用傳遞。
1.屬性重載
publicvoid __set (string$name
, mixed$value
)publicmixed__get ( string $name
)publicbool __isset (string $name
)publicvoid __unset (string $name
)在給不可訪問屬性賦值時,__set() 會被調用。
讀取不可訪問屬性的值時,__get() 會被調用。
當對不可訪問屬性調用 isset() 或empty() 時,__isset() 會被調用。
當對不可訪問屬性調用 unset() 時,__unset() 會被調用。
NOTE:
1.屬性重載只能在對象中進行。在靜態方法中,這些魔術方法將不會被調用。所以這些方法都不能被 聲明為 static。從 PHP 5.3.0 起, 將這些魔術方法定義為 static 會產生一個警告。
2.在除 isset() 外的其它語言結構中無法使用重載的屬性,這意味著當對一個重載的屬性使用empty() 時,重載魔術方法將不會被調用。為避開此限制,必須將重載屬性賦值到本地變量再使用empty()。
2.方法重載
publicmixed__call ( string$name
, array $arguments
)public staticmixed__callStatic ( string $name
, array $arguments
)在對象中調用一個不可訪問方法時,__call() 會被調用。
用靜態方式中調用一個不可訪問方法時,__callStatic() 會被調用。
$name 參數是要調用的方法名稱。$arguments 參數是一個枚舉數組,包含著要傳遞給方法$name 的參數。
新聞熱點
疑難解答
圖片精選