PHP这样写为什么报错?

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

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

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

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

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

是不是命名空间的问题?

你没有引入Wangyi 的命名空间

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

这样可以吧?

{$param['item']}::where('id', $param['id'])->delete();
新手上路,请多包涵

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

这都是嘛问题?

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题