在PHP 5.3.6中,我注意到以下内容无法正常工作:
发生了一个“unexpected T_PAAMAYIM_NEKUDOTAYIM”的错误。然而,使用临时变量可以得到预期的结果:
class Foo{
public static $class = 'Bar';
}
class Bar{
public static function sayHello(){
echo 'Hello World';
}
}
Foo::$class::sayHello();
发生了一个“unexpected T_PAAMAYIM_NEKUDOTAYIM”的错误。然而,使用临时变量可以得到预期的结果:
$class = Foo::$class;
$class::sayHello(); // Hello World
有人知道这是设计意图还是作用域解析运算符分词错误导致的结果吗?除了使用后者的临时变量示例,是否有更清晰的解决方法?
{${Foo::$class}}::sayHello();
这样做可能有效。不过我手头没有 PHP 解析器。 - Mark Tomlin$Foo
或$Bar
。 - Dan Lugg