本文實例講述了PHP 范圍解析操作符(::)用法。分享給大家供大家參考,具體如下:
范圍解析操作符 (::)
范圍解析操作符(也可稱作 Paamayim Nekudotayim)或者更簡單地說是一對冒號,可以用于訪問靜態成員,類常量,還可以用于覆蓋類中的屬性和方法。
當在類定義之外引用到這些項目時,要使用類名。
自 PHP 5.3.0 起,可以通過變量來引用類,該變量的值不能是關鍵字(如 self,parent 和 static)。
把 Paamayim Nekudotayim 選作雙冒號操作符的名字似乎有些奇怪。然而,這是 Zend 開發小組在寫 Zend Engine 0.5(被用于 PHP 3 中)時所作出的決定。事實上這個詞在希伯萊文就是雙冒號的意思。
在類的外部使用 ::
self,parent 和 static 這三個特殊的關鍵字是用于在類定義的內部對其屬性或方法進行訪問的。
1
2
3
4
5
6
7
8
9
|
<?php class MyClass { const CONST_VALUE = 'A constant value' ; } $classname = 'MyClass' ; echo $classname ::CONST_VALUE; // 自 PHP 5.3.0 起 echo MyClass::CONST_VALUE; |
在類定義的內部使用 ::
當一個子類覆蓋其父類中的方法時,PHP 不會調用父類中已被覆蓋的方法。是否調用父類的方法取決于子類。這種機制也作用于構造函數和析構函數,重載以及魔術方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php class OtherClass extends MyClass { public static $my_static = 'static var' ; public static function doubleColon() { echo parent::CONST_VALUE . "\n" ; echo self:: $my_static . "\n" ; } } $classname = 'OtherClass' ; echo $classname ::doubleColon(); // 自 PHP 5.3.0 起 OtherClass::doubleColon(); |
調用父類的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<?php class MyClass { protected function myFunc() { echo "MyClass::myFunc()\n" ; } } class OtherClass extends MyClass { // 覆蓋了父類的定義 public function myFunc() { // 但還是可以調用父類中被覆蓋的方法 parent::myFunc(); echo "OtherClass::myFunc()\n" ; } } $class = new OtherClass(); $class ->myFunc(); |
運行結果:
MyClass::myFunc()
OtherClass::myFunc()
希望本文所述對大家PHP程序設計有所幫助。
原文鏈接:https://www.cnblogs.com/ryanzheng/p/11405699.html