2011-07-01 30 views
2

編輯:動態加載類和訪問的靜態變量在PHP <= 5.2

我解決它通過讓所有使用get_class_vars()的類的變量,然後只從陣列獲取的正確的屬性,如果它存在。對我來說似乎很簡單;如果任何人有不同的解決方案,我很樂意聽到它(或閱讀它,我猜..):)

我想訪問動態加載類中的靜態變量,如下所示:

$file::$disabled 

(在上面的語句,$文件顯然引用名稱的類,並且$禁用是靜態變量我想在類中訪問。)

在PHP 5.3,這工作正常;作爲在較低版本上運行上述代碼的結果,我得到臭名昭着的T_PAAMAYIM_NEKUDOTAYIM錯誤。

在使用舊版本的PHP時,我通常會得到這個錯誤是爲該變量創建一個getter函數並使用call_user_func()獲取該返回值。但是,爲了便於開發人員使用此代碼,我希望將$ disabled作爲簡單變量而不是函數。

我試過eval()的聲明,只能達到另一個死衚衕。

有沒有人知道我可以做到這一點?

回答

2

一種選擇是使用反射:

$rp = new ReflectionProperty($file, $disabled); 
$value = $rp->getValue(); 

$rc = new ReflectionClass($file); 
$value $rc->getStaticPropertyValue($disabled); 
+0

是的,我認爲,選擇爲好,但我想這與版本一起使用PHP 5下一些我正在使用的開發人員是...懷舊:P謝謝! – BraedenP