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

dqh*_*cks 15 php variables methods static

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

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

$variable_class_name = 'foo';
$variable_class_name::bar();
Run Code Online (Sandbox Code Playgroud)

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

Bol*_*ock 19

该语法仅在PHP 5.3及更高版本中受支持.以前的版本不理解该语法,因此您的解析错误(T_PAAMAYIM_NEKUDOTAYIM::运算符).

在以前的版本中,您可以尝试call_user_func()向其传递包含类名及其方法名称的数组:

$variable_class_name = 'foo';
call_user_func(array($variable_class_name, 'bar'));
Run Code Online (Sandbox Code Playgroud)


Dav*_*ess 7

您可以使用PHP 5.1及以上版本的反射:

class foo {
    public static $bar = 'foobar';
}

$class = 'foo';
$reflector = new ReflectionClass($class);
echo $reflector->getStaticPropertyValue('bar');

> foobar
Run Code Online (Sandbox Code Playgroud)