本文實例講述了PHP 范圍解析操作符(::)用法。分享給大家供大家參考,具體如下:
范圍解析操作符 (::)
范圍解析操作符(也可稱作 Paamayim Nekudotayim)或者更簡單地說是一對冒號,可以用于訪問靜態(tài)成員,類常量,還可以用于覆蓋類中的屬性和方法。
當在類定義之外引用到這些項目時,要使用類名。
自 PHP 5.3.0 起,可以通過變量來引用類,該變量的值不能是關鍵字(如 self,parent 和 static)。
把 Paamayim Nekudotayim 選作雙冒號操作符的名字似乎有些奇怪。然而,這是 Zend 開發(fā)小組在寫 Zend Engine 0.5(被用于 PHP 3 中)時所作出的決定。事實上這個詞在希伯萊文就是雙冒號的意思。
在類的外部使用 ::
self,parent 和 static 這三個特殊的關鍵字是用于在類定義的內部對其屬性或方法進行訪問的。
?php
class MyClass {
const CONST_VALUE = 'A constant value';
}
$classname = 'MyClass';
echo $classname::CONST_VALUE; // 自 PHP 5.3.0 起
echo MyClass::CONST_VALUE;
在類定義的內部使用 ::
當一個子類覆蓋其父類中的方法時,PHP 不會調用父類中已被覆蓋的方法。是否調用父類的方法取決于子類。這種機制也作用于構造函數(shù)和析構函數(shù),重載以及魔術方法。
?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();
調用父類的方法
?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相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:- PHP中類靜態(tài)調用和范圍解析操作符的區(qū)別解析
- PHP的范圍解析操作符(::)的含義分析說明
- php基礎知識:類與對象(4) 范圍解析操作符(::)
- php靜態(tài)成員方法和靜態(tài)的成員屬性的使用方法
- PHP靜態(tài)成員變量和非靜態(tài)成員變量詳解
- PHP靜態(tài)成員變量
- 淺析PHP的靜態(tài)成員函數(shù)效率更高的原因
- PHP 5.0對象模型深度探索之類的靜態(tài)成員