本文實例講述了PHP后期靜態綁定之self::限制。分享給大家供大家參考,具體如下:
在此我想講一講后期靜態綁,我想講self::
與static
進行比較說明。
官方文檔上是這樣定義的:
“后期綁定”的意思是說,static:: 不再被解析為定義當前方法所在的類,而是在實際運行時計算的。也可以稱之為”靜態綁定”,因為它可以用于(但不限于)靜態方法的調用。
在此我想用官方文檔上的一個例子來說明self::限制:
self::實例
class A{ public static function who(){ echo __CLASS__; } public static function test(){ self::who(); } } class B extends A{ public static function who(){ echo __class__; } } $B=new B(); $B->test();`
輸出結果為:
A
static實例:
class A{ public static function who(){ echo __class__; } public static function test(){ static::who(); } } class B extends A{ public static function who(){ echo __class__; } } $B=new B(); $B->test();
輸出結果為:
B
注意,注意啦!這里用的是:static::
,以前很少在PHP中見過這種寫法吧?看到static::
,不禁想起來:self::
parent::
在此我想把self::
static::
parent::
進行一個比較:
-
self::
通常指向類本身,也就是self是不指向任何已經實例化的對象,一般self使用來指向類中的靜態變量(不可以指向非靜態變量),但是可以訪問類中其他靜態方法與非靜態方法。它是當前類的指針。 -
parent::
是指向父類的指針,一般我們使用parent來調用父類的構造函數。但也可以訪問父類的其他方法(不可以訪問其他靜態與非靜態變量)。 -
static::
通常用于后期靜態綁定中。
希望本文所述對大家PHP程序設計有所幫助。