2011-01-06 65 views
1

在PHP的限制,我可以這樣做:PHP:可變的變量

$class = 'Notes'; 
echo $class::message(); 

但似乎從一個方法中,我不能做到這一點:

echo ($this->myClass)::message(); 

,也做不到這個:

echo someFunctionThatReturnsClassName()::message(); 

有人可以解釋爲什麼嗎?並給出一些關於何時以及如何使用這種間接機制的規則?

謝謝 吉迪

回答

3

這不是可變的變量的問題,它是用PHP不允許這種語法的問題。有一個建議,以解決這個問題的核心,但這一個還沒有被接受:http://wiki.php.net/rfc/fcallfcall(也http://wiki.php.net/rfc/functionarraydereferencing

+0

好趕上,想知道這一個。 – karim79 2011-01-06 14:40:17

+0

謝謝,這很好地回答我的第二個例子,不是我的第一個例子 – shealtiel 2011-01-06 14:44:54

+0

好吧,因爲你理論上的第一個例子是相同的:通過添加括號(),你告訴PHP解釋器執行那部分代碼然後調用一個靜態方法。哪個會失敗。如果你做$ temp =($ this-> myClass); $ temp :: message(),它會像魅力一樣工作。 – maartenba 2011-01-06 14:48:31