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

时间:2013-02-13 22:47:07

标签: php

为什么在类实例上下文中,$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();

1 个答案:

答案 0 :(得分:1)

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

的内容。
call_user_func("{$this->className}::doSomething");