您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關怎么在PHP中使用self::限制實現后期靜態綁定,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
官方文檔上是這樣定義的:
“后期綁定”的意思是說,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中使用self::限制實現后期靜態綁定,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。