本文主要介紹了PHP物件導向之後期靜態綁定功能介紹。本文將對PHP後期靜態綁定功能進行介紹,它主要用於解決在繼承範圍內引用靜態呼叫的類別。希望對大家有幫助。
本文將對PHP後期靜態綁定功能進行介紹,它主要用於解決在繼承範圍內引用靜態呼叫的類別。
首先來看下面這個例子:
class Person { public static function status() { self::getStatus(); } protected static function getStatus() { echo "Person is alive"; } } class Deceased extends Person { protected static function getStatus() { echo "Person is deceased"; } } Deceased::status(); //Person is alive
很明顯,結果不是我們預期的,這是因為self::取決於定義時所在的類,而不是運行中的類別。為了解決這個問題,你可能會在繼承類別中重寫status()方法,更好的解決方案是PHP 5.3後加入了後期靜態綁定的功能。
class Person { public static function status() { static::getStatus(); } protected static function getStatus() { echo "Person is alive"; } } class Deceased extends Person { protected static function getStatus() { echo "Person is deceased"; } } Deceased::status(); //Person is deceased
可見,static::不在指向目前所在的類,實際上,它是在運行中計算的,強制取得最終類別的所有屬性。
因此,建議,以後不要再使用self::,使用static::
相關推薦:
以上是PHP OOP之後期靜態綁定的詳細內容。更多資訊請關注PHP中文網其他相關文章!