首頁  >  文章  >  後端開發  >  php類別常數、靜態屬性、非靜態屬性三者的差異詳解

php類別常數、靜態屬性、非靜態屬性三者的差異詳解

伊谢尔伦
伊谢尔伦原創
2017-06-29 09:27:171283瀏覽

一.類別常數:在類別中始終保持不變的值定義為常數

類別的常數不能使用存取限制修飾符,他是public 的,可繼承,可以被子類別重寫,存取類別的常數必須使用雙冒號:: ,可以使用類別名稱或類別的實例來訪問,因為是常數,所以名稱不能使用表示變量的符號$.

可以把在類別中始終保持不變的值定義為常數。在定義和使用常數的時候不需要使用 $ 符號。

常數的值必須是一個定值,不能是變量,類別屬性,數學運算的結果或函數呼叫。

介面(interface)中也可以定義常數。更多範例請參閱文件中的介面部分。

自 PHP 5.3.0 起,可以用一個變數來動態呼叫類別。但該變數的值不能為關鍵字(如 self,parent 或 static)。

語法: const constant= '常數';

class Myclass{
 const constant = '常量';

 //类内部调用
 public function test(){
  echo self::constant.&#39;<br>&#39;;
 } 
}
Myclass::test();
//类外部访问
echo Myclass::constant.&#39;<br>&#39;; //方法一

$obj = new Myclass();  //方法二
echo $obj::constant.&#39;<br>&#39;;

二.靜態屬性: 是一個變量,可以常數的語法訪問,就是:: ,沒有實例化也能存取

語法:public static $my_static = '類似常數';

class Myclass{
 public static $static_val = &#39;静态属性&#39;;
 //类内部访问
 public function test(){
  return self::$static_val.&#39;<br>&#39;;
 } 
}

//类外部访问
// echo Myclass::test();
echo Myclass::$static_val;  //方法一
$obj = new Myclass();    //方法二
echo $obj::$static_val;
echo $obj->test();

三.非靜態屬性: 正常的變量,實例化後可以訪問,用-> 符號

語法: public $my_val = '正常變數'

class Myclass{
 public $normal_val = &#39;非静态属性&#39;;

 //类内部访问
 public function test(){
  return $this->normal_val ;
 } 
}
//类外部访问
$obj = new Myclass(); 
echo $obj->normal_val;
echo $obj->test();

PHP取得類別中常數,屬性,及方法列表的方法

$r = new ReflectionClass($this); 
Zend_Debug::dump($r->getConstants(), "Constants"); 
Zend_Debug::dump($r->getProperties(), "Properties"); 
Zend_Debug::dump($r->getMethods(), "Methods");

以上是php類別常數、靜態屬性、非靜態屬性三者的差異詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn