PHP物件導向之後期靜態繫結功能介紹

2022-10-06 07:36:11 字數 669 閱讀 9535

本文將對php後期靜態繫結功能進行介紹,它主要用於解決在繼承範圍內引用靜態呼叫的類。

首先來看下面這個例子:

複製** **如下:

class person

protected static function getstatus()

}class deceased extends person }

deceased::status(); //person is alive

很明顯,結果不是我們預期的,這是因為self::取決於定義時所在的類,而不是執行中的類。為了解決這個問題,你可能會在繼承類中重寫smgyuchshytatus()方法,更好的解決方案是php 5.3後新增了後期靜態繫結的功能。

複製** **如下:

class person

protected static function getstatus()

}class deceased extends person }

deceased::status(); //person is deceased

可見,static::不在指向當前所在的類,實際上,它是在執行中計算的,強制獲取最終類的所有屬性。

因此,建議,以後不要再使用self::,使用static::

本文標題: php物件導向之後期靜態繫結功能介紹

本文位址:

php後期靜態繫結

後期靜態繫結 static 不再被解析為定義當前方法或屬性所在的類,而是在實際執行時計算的 可用 get called class 函式來得到被呼叫的方法所在的類名 this是指向當前物件 self 指向當前的類 self就是寫在哪個類裡面,實際呼叫的就是這個類 parent 指向父類 static...

php中後期靜態繫結(延遲靜態繫結)技術

定義乙個父類 這就要用到後期靜態繫結的技術,所謂後期,是指靜態方法的呼叫者,只有在執行狀態下才進行動態繫結,使用關鍵字 static 來實現,此時,static 就像乙個變數,始終與當前的呼叫類是繫結的class father 靜態方法 訪問當前類中的其它靜態成員 public static fun...

PHP高階特性 後期靜態繫結

後期繫結 的意思是說,static 不再被解析為定義當前方法所在的類,而是由最終運算時動態決定。也可以稱之為 靜態繫結 因為它可以用於 但不限於 靜態方法的呼叫。class a publicstaticfunction test class b extends a b test 輸出 class a...