使用变量类名(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:请参阅。