我正在尝试访问静态方法,但使用变量作为类名。这可能吗?我似乎遇到了问题。我希望能够做到这样的事情:
class foo {
public static function bar() {
echo 'test';
}
}
$variable_class_name = 'foo';
$variable_class_name::bar();
我希望能够使用静态变量做类似的事情。
答案 0 :(得分:19)
仅在PHP 5.3及更高版本中支持该语法。以前的版本不理解该语法,因此您的解析错误(T_PAAMAYIM_NEKUDOTAYIM
引用::
运算符)。
在以前的版本中,您可以尝试call_user_func()
,向其传递一个包含类名及其方法名称的数组:
$variable_class_name = 'foo';
call_user_func(array($variable_class_name, 'bar'));
答案 1 :(得分:7)
您可以将reflection用于PHP 5.1及更高版本:
class foo {
public static $bar = 'foobar';
}
$class = 'foo';
$reflector = new ReflectionClass($class);
echo $reflector->getStaticPropertyValue('bar');
> foobar