PHP - 如何动态地为参数分配带参数的方法?

时间:2017-02-15 12:53:48

标签: php laravel

我有这个代码,例如:

$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();

但是,我想执行包括在字符串中定义的参数的函数。

我希望必须有办法做到这一点。

1 个答案:

答案 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