怎么在PHP中實現(xiàn)后期靜態(tài)綁定?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
self::的限制
使用self::
或者_class_
對當前類的靜態(tài)引用,取決于定義當前方法所在的類
例子:
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::test(); //A
打印結(jié)果:
A
后期靜態(tài)綁定的用法
后期靜態(tài)綁定試圖通過引入一個關(guān)鍵字表示運行時最初調(diào)用的類來繞過限制。簡單的說,這個關(guān)鍵字能夠讓你在上述中調(diào)用test()時引用的類是B而不是A。最終決定不引用新的關(guān)鍵字,而是使用已經(jīng)預(yù)留static關(guān)鍵字
例子:
<?php class A { public static function who() { echo __CLASS__; } public static function test() { static::who(); // 后期靜態(tài)綁定從這里開始 } } class B extends A { public static function who() { echo __CLASS__; } } B::test(); ?>
打印結(jié)果是:
B
后期靜態(tài)綁定的處理方式解決了以往完全沒有解決的靜態(tài)調(diào)用,另外一方面,如果靜態(tài)調(diào)用使用parent::或者self::將轉(zhuǎn)發(fā)調(diào)用信息
<?php class A { public static function foo() { static::who(); } public static function who() { echo __CLASS__."\n"; } } class B extends A { public static function test() { A::foo(); parent::foo(); self::foo(); } public static function who() { echo __CLASS__."\n"; } } class C extends B { public static function who() { echo __CLASS__."\n"; } } C::test(); ?>
打印結(jié)果:
A
C
C
例子:
<?php class a { static public function test() { print get_called_class(); } } class b extends a { } a::test(); b::test(); ?>
打印結(jié)果:
a
b
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。
網(wǎng)站標題:怎么在PHP中實現(xiàn)后期靜態(tài)綁定-創(chuàng)新互聯(lián)
當前路徑:http://chinadenli.net/article42/ddihec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、App開發(fā)、ChatGPT、網(wǎng)站收錄、響應(yīng)式網(wǎng)站、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容