一:php後期靜態繫結
從php5.3開始,php增加了乙個叫後期繫結的功能,用於在繼承範圍內引用靜態呼叫的類
該功能從語言內部角度考慮北命名為「後期靜態繫結」;「後期繫結」意思說:static::不再被解析為定義當前方法所在的類,而是在實際執行時計算的,也可以成為「靜態繫結」;因為他可以用於(但不限於靜態方法的呼叫)。
self::的限制
使用self::或者_class_對當前類的靜態引用,取決於定義當前方法所在的類
例子:
class a
public static function test() }
class b extends a }
b::test(); //a
列印結果:a
後期靜態繫結的用法
後期靜態繫結試圖通過引入乙個關鍵字表示執行時最初呼叫的類來繞過限制。簡單的說,這個關鍵字能夠讓你在上述中呼叫test()時引用的類是b而不是a。最終決定不引用新的關鍵字,而是使用已經預留static關鍵字
例子:
<?php
class a
public static function test() }
class b extends a }
b::test();
?>
列印結果是:b
後期靜態繫結的處理方式解決了以往完全沒有解決的靜態呼叫,另外一方面,如果靜態呼叫使用parent::或者self::將**呼叫資訊
<?php
class a
public static function who() }
class b extends a
public static function who()
}class c extends b }
c::test();
?>
列印結果:
a c c
例子:
<?php
class a }
class b extends a
a::test();
b::test();
?>
列印結果:ab
特別宣告:
get_called_class();獲得類的名稱靜態方法中呼叫
<?php
class a
public static function who()
}class b extends a
public static function who()
}class c extends b
}c::test();
?>
巧記前端易混淆的英文語法
對於博主這種英語瞎來說,有些語法看幾十次技術文件過後還是傻傻搞不清,就是毫無理由的記不住,就好像漢字看久了會不認識一樣。於是,博主根據聯想記憶法找到一些記憶易混淆語法的竅門,在這裡分享給與我有同樣痛苦的童鞋。使用場景 多用於css的偽類選擇器nth child n 巧記 數它們的字母個數,odd有3...
基礎補習 PHP易混淆函式的區分
今天看到毛毛蟲給大家做了個空字串和null的區分 感覺對基礎知識不紮實的小鳥 比如我 很有幫助,夜深了,一時來興致,查了很多 權威資料 寫一篇文章貼到這裡和大家一起補習一下基礎知識,當然,我的標題寫的並不嚴謹,內容也只是個人的總結,不足之處請高手多補充,話不多說,正文如下 1.echo和print的...
基礎補習 PHP易混淆函式的區分
今天看到毛毛蟲給大家做了個空字串和null的區分 感覺對基礎知識不紮實的小鳥 比如我 很有幫助,夜深了,一時來興致,查了很多 權威資料 寫一篇文章貼到這裡和大家一起補習一下基礎知識,當然,我的標題寫的並不嚴謹,內容也只是個人的總結,不足之處請高手多補充,話不多說,正文如下 1.echo和print的...