使用变量类名(PHP)访问静态方法
我试图访问一个静态方法,但使用变量作为类名。这可能吗?我似乎对它有意见。我希望能够做到以下几点:使用变量类名(PHP)访问静态方法,php,variables,methods,static,Php,Variables,Methods,Static,我试图访问一个静态方法,但使用变量作为类名。这可能吗?我似乎对它有意见。我希望能够做到以下几点: class foo { public static function bar() { echo 'test'; } } $variable_class_name = 'foo'; $variable_class_name::bar(); 我也希望能够使用静态变量进行类似的操作。这种语法仅在PHP5.3及更高版本中受支持。以前的版本不理解该语法,因此您的解析错误(t
class foo {
public static function bar() {
echo 'test';
}
}
$variable_class_name = 'foo';
$variable_class_name::bar();
我也希望能够使用静态变量进行类似的操作。这种语法仅在PHP5.3及更高版本中受支持。以前的版本不理解该语法,因此您的解析错误(
t\u PAAMAYIM\u NEKUDOTAYIM
指的是:
操作符)
在以前的版本中,您可以尝试调用\u user\u func()
,将包含类名及其方法名的数组传递给它:
$variable_class_name = 'foo';
call_user_func(array($variable_class_name, 'bar'));
您可以使用PHP 5.1及以上版本:
class foo {
public static $bar = 'foobar';
}
$class = 'foo';
$reflector = new ReflectionClass($class);
echo $reflector->getStaticPropertyValue('bar');
> foobar
这对我在PHP5.3.2上的工作很好。我相信使用5.2。在第35行的/some/path/application/models/lev_base_model.php中获得一个类似“Parse error:syntax error,意外的T_PAAMAYIM_NEKUDOTAYIM”的错误。您运行的是什么版本的php?据我所知,在最近的版本中(5.2+,虽然不确定从什么时候开始生效),您已经能够做到这一点@Gordon似乎只允许在5.3+中使用,看起来很棒。静态属性有类似的东西吗?@dqhendricks:不确定类变量。对于参数,使用带有可变参数的
call\u user\u func()
(如sprintf()
),或使用带有参数数组的call\u user\u func\u array()
。这两个函数都返回方法的返回值。@dqhendricks:请参阅。