PHP 5.6使用类名作为变量字符串调用多个类方法

时间:2019-06-12 19:31:31

标签: php string class eloquent php-5.6

我有一个类名作为字符串变量(实际上是一个雄辩的模型类名)

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 ...

正确的方法是什么?

2 个答案:

答案 0 :(得分:1)

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

class Base_controller{

    public modelClassName = 'Product';

    public function index(){

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

答案 1 :(得分:1)

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

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