我有一个类名作为字符串变量(实际上是一个雄辩的模型类名)
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 ...
正确的方法是什么?
答案 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();
}