PHP这样写为什么报错?

从前端传过来的一个参数$param['item'] 接收到的值是Wangyi
下面这样写就会报Class 'Wangyi' not found的错误 如果直接写Wangyi就不会报错 这是为什么?应该怎样写才不会报错?

$param = $request->all();
$res=$param['item']::where('id', $param['id'])->delete();
阅读 2.2k
评论
    7 个回答

    你这……,安全性为 0 啊。

    首先,你直接写是因为 IDE 自动导入,你选了提示的 Wangyi 后IDE会自动导入那个类,包含完整的命名空间。

    传值过来报错是因为你传值过来只是一个简单的字符串「Wangyi」,并没有这个类完整的命名空间。需要拼接「Wangyi」所在的完整的命名空间。

      是不是命名空间的问题?

        你没有引入Wangyi 的命名空间

        use Wangyi文件的相对路径/Wangyi;

          这样可以吧?

          {$param['item']}::where('id', $param['id'])->delete();
            • 3
            • 新人请关照

            在这之前应该用 class_exists 判断一下 Wangyi 是否存在。

              • 14

              这都是嘛问题?

                你把sql语句打印出来看看是什么?

                  撰写回答

                  登录后参与交流、获取后续更新提醒