萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php 類中的常量、靜態以及非靜態屬性之間的區別

php 類中的常量、靜態以及非靜態屬性之間的區別

今天文章要給大家帶來的是php 類中的常量、靜態以及非靜態屬性之間的區別介紹,讓大家了解他們之間有什麼區別,下面一起來看看。 一.類常量:在類中始終保持不變的值定義為常量

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

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

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

接口(interface)中也可以定義常量。更多示例見文檔中的接口部分。

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

語法 : const constant= '常量'

classMyclass{

 constconstant ='常量'

 //類內部調用

 publicfunctiontest(){

  echoself::constant.'
'

 } 

}

Myclass::test();

//類外部訪問

echoMyclass::constant.'
'//方法一

  

$obj=newMyclass(); //方法二

echo$obj::constant.'
'

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

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

classMyclass{

 publicstatic$static_val='靜態屬性'

 //類內部訪問

 publicfunctiontest(){

  returnself::$static_val.'
'

}

  

//類外部訪問

// echo Myclass::test();

echoMyclass::$static_val; //方法一

$obj=newMyclass();   //方法二

echo$obj::$static_val;

echo$obj->test();

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

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

classMyclass{

 public$normal_val='非靜態屬性'

 //類內部訪問

 publicfunctiontest(){

  return$this->normal_val ;

 } 

}

//類外部訪問

$obj=newMyclass(); 

echo$obj->normal_val;

echo$obj->test();

PHP獲取類中常量,屬性,及方法列表的方法

$r=newReflectionClass($this); 

Zend_Debug::dump($r->getConstants(),"Constants"); 

Zend_Debug::dump($r->getProperties(),"Properties"); 

Zend_Debug::dump($r->getMethods(),"Methods");

copyright © 萬盛學電腦網 all rights reserved