2011-04-13 134 views
0

名爲$class的變量包含類的名稱。訪問「變量」類的成員

如何訪問該類的靜態成員?

我需要一種可以在PHP 5.2中工作的方法。


在PHP 5.3以下工作:

$class::$default_error_message; 

在PHP 5.2它輸出:

unexpected T_PAAMAYIM_NEKUDOTAYIM 

順便說一句,T_PAAMAYIM_NEKUDOTAYIM?! PHP不停地讓我驚歎不已。

+1

FYI:「PAAMAYI M NEKUDOTAYIM「顯然是希伯來語的」雙冒號「。 PHP還將解析器標記「T_DOUBLE_COLON」定義爲我猜的別名,但希伯來語版本現在是一個衆所周知的笑話。 – AgentConundrum 2011-04-13 20:59:10

回答

1
function getStaticMember($class, $member) { 
    if(is_object($class)) 
     $class = get_class($class); 
    $classObj = new ReflectionClass($class); 
    $result = null; 
    foreach($classObj->getStaticProperties() as $prop => $value) { 
     if($prop == $member) { 
      $result = $value; 
      break; 
     } 
    } 
    return $result; 
} 

另外:

In PHP, the scope resolution operator is also called Paamayim Nekudotayim (Hebrew: פעמיים נקודתיים‎), which means "twice colon" or "double colon" in Hebrew.

+0

按預期工作!謝謝! – 2011-04-13 21:03:23

2

使用get_class_vars

$values = get_class_vars($class); 

echo $values["default_error_message"]; 

CodePad Demo

+0

他試圖讀取一個靜態變量,而不是調用一個函數。 – 2011-04-13 20:59:18

+0

非常真實,改變了答案。 – 2011-04-13 21:01:12

+0

我相信'$ default_error_message'必須變成''default_error_message''。除此之外,這是一個很好的方法。非常優雅。 – 2011-04-13 21:06:40