我有这个代码,例如:
$sheet_data=Model::where('workbook_ord',"$workbook")->get();
我想动态地将where
块分配给Model
,如下所示:
$qry = 'where("workbook_ord","$workbook")';
我希望查询变成这样:
$sheet_data=Model::eval($qry)->get();
我知道如果我想动态使用方法名称,我可以这样使用:
$qry = "where";
$sheet_data=Model::$qry('workbook_ord',"$workbook")->get();
但是,我想执行包括在字符串中定义的参数的函数。
我希望必须有办法做到这一点。
答案 0 :(得分:0)
不完全是您要求的问题的解决方案,但您可以使用魔术方法来实现类似的目标
对于您的特定情况,您可以使用__callStatic()
,您可以使用相应的参数调用__callStatic
内的任何伪方法。
class Model
{
public static function __callStatic($name, $arguments)
{
// Note: value of $name is case sensitive.
echo "Calling static method '$name' "
. implode(', ', $arguments). "\n";
}
}
Model::where('workbook_ord', 'test')
// will echo: Calling static method 'where' workbook_ord, test