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();
}
我有一个 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();
}