我正在尝试访问一个静态方法,但是使用变量作为类名。这种做法可行吗?我好像遇到了一些问题。我想能够像这样做:
class foo {
public static function bar() {
echo 'test';
}
}
$variable_class_name = 'foo';
$variable_class_name::bar();
我希望能够使用静态变量完成类似的操作。
我正在尝试访问一个静态方法,但是使用变量作为类名。这种做法可行吗?我好像遇到了一些问题。我想能够像这样做:
class foo {
public static function bar() {
echo 'test';
}
}
$variable_class_name = 'foo';
$variable_class_name::bar();
我希望能够使用静态变量完成类似的操作。
这种语法只支持PHP 5.3及更高版本。以前的版本不理解这种语法,因此会出现解析错误(T_PAAMAYIM_NEKUDOTAYIM
是指::
运算符)。
在以前的版本中,您可以尝试使用call_user_func()
,将其传递一个包含类名和其方法名的数组:
$variable_class_name = 'foo';
call_user_func(array($variable_class_name, 'bar'));
call_user_func()
(例如sprintf()
),或者使用带有参数数组的call_user_func_array()
。这两个函数都返回方法的返回值。 - BoltClockclass foo {
public static $bar = 'foobar';
}
$class = 'foo';
$reflector = new ReflectionClass($class);
echo $reflector->getStaticPropertyValue('bar');
> foobar