引用静态 class 方法给定 class 名称作为 PHP5.5 中的字符串

Reference static class method given class name as string in PHP5.5

我有一个包含 class 名称的变量。

public $modelClass = 'common\models\Notecard';

那个 class 有一个静态方法。

public static function do_something() { ... }

鉴于此信息,我想调用静态函数。对于非静态函数,我可以执行以下操作:

$model_name = $this->modelClass;
$model = new $model_name();
$model->do_something_else();

是的,这很简单: 您可以从您的实例中调用该函数,例如

$model_name = $this->modelClass;
$model = new $model_name();
$model::do_something();

或使用call_user_func()

call_user_func([$modelClass, 'do_something']);

您可以使用 $model_name::do_something_else().

class foo {
    public static function bar() {
        echo "Called bar";
    }
}

$fname = "foo";
$fname::bar();

输出Called bar

适用于 php7。