PHP 5.6 以class名称作为变量字符串调用多个class方法

PHP 5.6 calling multiple class methods with class name as variable string

我有一个 class 名称作为字符串变量(它实际上是一个 eloquent 模型 class 名称)

class Base_controller{
    public modelClassName = 'Product';
}

我想用参数调用这个模型的方法


class Base_controller{

    public modelClassName = 'Product';

    public function index(){

        $fields= 'id, name, price';

        $this->modelClassName::select($fields)->get();
    }
}

当我调用索引函数时,出现错误:

Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM) in ...

正确的做法是什么?

复制class属性的值到普通变量,然后使用变量函数调用语法。

class Base_controller{

    public modelClassName = 'Product';

    public function index(){

        $fields= 'id, name, price';
        $class = $this->modelClassName;
        $class::select($fields)->get();
    }
}

如果您愿意,也可以使用 call_user_func

public function index()
{
    $fields = 'id, name, price';
    call_user_func([$this->modelClassName, 'select'], $fields)->get();
}