程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php基礎知識:類與對象(4) 范圍解析操作符(::)

php基礎知識:類與對象(4) 范圍解析操作符(::)

編輯:關於PHP編程

范圍解析操作符(也可稱作 Paamayim Nekudotayim)或者更簡單地說是一對冒號,可以用於訪問靜態成員、方法和常量,還可以用於訪問被覆蓋類中的成員和方法。 
當在類的外部訪問這些靜態成員、方法和常量時,必須使用類的名字。
把 Paamayim Nekudotayim 在希伯萊文就是雙冒號的意思。 

在類的外部使用 :: 操作符
class MyClass {
   const CONST_VALUE = 'A constant value';
}

echo MyClass::CONST_VALUE;

self 和 parent 這兩個特殊的關鍵字是用於在類的內部對成員或方法進行訪問的。 

例子:
class OtherClass extends MyClass
{
   public static $my_static = 'static var';

   public static function doubleColon() {
       echo parent::CONST_VALUE . " n";
       echo self::$my_static . " n";
   }
}
OtherClass::doubleColon();

當一個子類覆蓋其父類中的方法時,PHP 不會再執行父類中已被覆蓋的方法,直到子類中調用這些方法為止。(是不是廢話?不是,這是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();




--------------------------------------------------------------------------------
??重點??訪問靜態方法或者成員時一定要使用類名::的方式。
另外就是注意:PHP不會主動調用父類的方法,包括構造函數和析構函數在內。
參見這個文字:http://163xiaofan.blog.163.com/blog/static/1713578020061027101820973 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved