引用静态类方法,在PHP5.5中将类名称作为字符串

时间:2017-01-04 18:57:31

标签: php class static php-5.5

我有一个包含类名的变量。

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

该类有一个静态方法。

public static function do_something() { ... }

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

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

2 个答案:

答案 0 :(得分:1)

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

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

或使用call_user_func()

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

答案 1 :(得分:0)

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

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

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

输出Called bar

适用于php7。