使用变量类名访问静态方法(PHP)

时间:2011-02-20 20:59:47

标签: php variables methods static

我正在尝试访问静态方法,但使用变量作为类名。这可能吗?我似乎遇到了问题。我希望能够做到这样的事情:

class foo {
    public static function bar() {
        echo 'test';
    }
}

$variable_class_name = 'foo';
$variable_class_name::bar();

我希望能够使用静态变量做类似的事情。

2 个答案:

答案 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