douji9816 2017-02-15 12:53
浏览 48

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

I have this code for example:

$sheet_data=Model::where('workbook_ord',"$workbook")->get();

I want to assign where block to Model dynamically like this:

$qry = 'where("workbook_ord","$workbook")';

and I want the query to become like this:

$sheet_data=Model::eval($qry)->get();

I know if I want to use method name dynamically, I can use that like this:

$qry = "where";
$sheet_data=Model::$qry('workbook_ord',"$workbook")->get();

But, I want to execute function including parametera defined in a string.

I hope there must be a way to do that.

  • 写回答

1条回答 默认 最新

  • duanlie1298 2017-02-15 13:05
    关注

    Not exactly the solution for the problem you asked for but you can use magic methods to achieve something similar.
    For your specific case you can use __callStatic() where you can call any pseudo method to be parsed inside __callStatic with the correspondent arguments.

    class Model
    {
        public static function __callStatic($name, $arguments)
        {
            // Note: value of $name is case sensitive.
            echo "Calling static method '$name' "
                 . implode(', ', $arguments). "
    ";
        }
    }
    
    Model::where('workbook_ord', 'test')
    // will echo: Calling static method 'where' workbook_ord, test
    
    评论

报告相同问题?

悬赏问题

  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数