本文實(shí)例講述了PHP后期靜態(tài)綁定之self::限制。分享給大家供大家參考,具體如下:
在此我想講一講后期靜態(tài)綁,我想講self::
與static
進(jìn)行比較說明。
官方文檔上是這樣定義的:
“后期綁定”的意思是說,static:: 不再被解析為定義當(dāng)前方法所在的類,而是在實(shí)際運(yùn)行時(shí)計(jì)算的。也可以稱之為”靜態(tài)綁定”,因?yàn)樗梢杂糜冢ǖ幌抻冢╈o態(tài)方法的調(diào)用。
在此我想用官方文檔上的一個(gè)例子來說明self::限制:
self::實(shí)例
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();`
輸出結(jié)果為:
A
static實(shí)例:
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();
輸出結(jié)果為:
B
注意,注意啦!這里用的是:static::
,以前很少在PHP中見過這種寫法吧?看到static::
,不禁想起來:self::
parent::
在此我想把self::
static::
parent::
進(jìn)行一個(gè)比較:
-
self::
通常指向類本身,也就是self是不指向任何已經(jīng)實(shí)例化的對象,一般self使用來指向類中的靜態(tài)變量(不可以指向非靜態(tài)變量),但是可以訪問類中其他靜態(tài)方法與非靜態(tài)方法。它是當(dāng)前類的指針。 -
parent::
是指向父類的指針,一般我們使用parent來調(diào)用父類的構(gòu)造函數(shù)。但也可以訪問父類的其他方法(不可以訪問其他靜態(tài)與非靜態(tài)變量)。 -
static::
通常用于后期靜態(tài)綁定中。
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。