PHP基礎(chǔ)之類和對(duì)象8——范圍解析操作符(::)
范圍解析操作符(也可稱作 Paamayim Nekudotayim)或者更簡單地說是一對(duì)冒號(hào),可以用于訪問靜態(tài)成員,類常量,還可以用于覆蓋類中的屬性和方法。
當(dāng)在類定義之外引用到這些項(xiàng)目時(shí),要使用類名。
自 PHP 5.3.0 起,可以通過變量來引用類,該變量的值不能是關(guān)鍵字(如?self,parent?和?static)。
把 Paamayim Nekudotayim 選作雙冒號(hào)操作符的名字似乎有些奇怪。然而,這是 Zend 開發(fā)小組在寫 Zend Engine 0.5(被用于 PHP 3 中)時(shí)所作出的決定。事實(shí)上這個(gè)詞在希伯萊文就是雙冒號(hào)的意思。
Example #1 在類的外部使用 :: 操作符
class MyClass{ const CONST_VALUE = 1;}$classname = ’MyClass’;echo $classname::CONST_VALUE; //自PHP5.3.0起echo MyClass::CONST_VALUE;
self,parent 和 static 這三個(gè)特殊的關(guān)鍵字是用于在類定義的內(nèi)部對(duì)其屬性或方法進(jìn)行訪問的。
Example #2 在類定義內(nèi)部使用 ::
function __autoload($classname){ require_once($classname.'.php');}class OtherClass extends MyClass{ public static $my_static = 1; public static function doubleColon(){echo parent::CONST_VALUE.’<br>’;echo self::$my_static,’<br>’; }}$classname = ’OtherClass’;echo $classname::doubleColon();OtherClass::doubleColon();
當(dāng)一個(gè)子類覆蓋其父類中的方法時(shí),PHP 不會(huì)調(diào)用父類中已被覆蓋的方法。是否調(diào)用父類的方法取決于子類。這種機(jī)制也作用于構(gòu)造函數(shù)和析構(gòu)函數(shù),重載以及魔術(shù)方法。
Example #3 調(diào)用父類的方法
class MyClass{ protected function myFunc() {echo ’MyClass::myFunc()<br>’; }}class OtherClass extends MyClass{ //覆蓋了父類的定義 public function myFunc() {//但還是可以調(diào)用父類中被覆蓋的方法parent::myFunc();echo ’OtherClass::myFunc()<br>’; }}$class = new OtherClass();$class -> myFunc();
輸出結(jié)果:
MyClass::myFunc()
OtherClass::myFunc()
相關(guān)文章:
1. 基于javascript處理二進(jìn)制圖片流過程詳解2. 解決android studio引用遠(yuǎn)程倉庫下載慢(JCenter下載慢)3. Gitlab CI-CD自動(dòng)化部署SpringBoot項(xiàng)目的方法步驟4. ajax請(qǐng)求添加自定義header參數(shù)代碼5. ASP基礎(chǔ)知識(shí)VBScript基本元素講解6. 使用Python和百度語音識(shí)別生成視頻字幕的實(shí)現(xiàn)7. Kotlin + Flow 實(shí)現(xiàn)Android 應(yīng)用初始化任務(wù)啟動(dòng)庫8. idea刪除項(xiàng)目的操作方法9. 教你如何寫出可維護(hù)的JS代碼10. 使用python 計(jì)算百分位數(shù)實(shí)現(xiàn)數(shù)據(jù)分箱代碼
