2011-01-06 40 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