Php 如何调用存储为变量的类的静态方法?

Php 如何调用存储为变量的类的静态方法?,php,Php,为什么在类实例上下文中,形式$this->className::staticMethod的调用不起作用,而形式$className::staticMethod的调用起作用 在下面的示例中,callDoSomething2起作用,但是callDoSomething不起作用(我得到一个解析器错误)。我使用的是PHP版本5.3.15 <?php class A { private $className; public function __construct($classNam

为什么在类实例上下文中,形式
$this->className::staticMethod
的调用不起作用,而形式
$className::staticMethod
的调用起作用

在下面的示例中,
callDoSomething2
起作用,但是
callDoSomething
不起作用(我得到一个解析器错误)。我使用的是PHP版本5.3.15

<?php
class A {
    private $className;

    public function __construct($className) {
        $this->className = $className;
    }

    public function callDoSomething() {
        $this->className::doSomething();
    }

    public function callDoSomething2() {
        $className = $this->className;
        $className::doSomething();
    }
}

class B {
    public static function doSomething() {
        echo "hello\n";
    }
}

$a = new A('B');
$a->doSomething();

callDoSomething2是一种方法,另一种方法是使用

call_user_func("{$this->className}::doSomething");

重复:请参见,您能否解释一下为什么
callDoSomething
不起作用?PHP解析器就是不能处理这个问题?是的,这是一个解析错误——PHP解析器就是不能处理这个问题。