为什么会报错啊
报错
不报错
我用原生 PHP 写了一个例子,测试了是可以用变量表示类名的,但在 ThinkPHP 里面就出现了这样的问题:
public function index(){ //请求视图 $name = $_GET['name']; $tmp = Db::name('menu')->where('url','=',$name)->find(); //判断视图是否为顶级 if($tmp['upper']!=0){ //查询上级名称 $tmp = Db::name('menu')->where('id','=',$tmp['upper'])->find(); //重新设置模板 $template = $tmp['type']=='list' ? $template = $tmp['url'] . '/' . $name : $name ; $className = ucfirst($tmp['url']); $data = new $className(); $data = $data->$name(); }else{ //是顶级则默认模板 $template = $name; $data = $this->$name(); } //记录现行操作 session('current',$name); //返回视图和数据 return view($template,['data' => $data]); }
1
liuguang 2020-07-10 14:53:01 +08:00 1
目测没加命名空间,new User 能直接用,是因为导入了这个类到当前的命名空间.
但是如果 new $className; 那么$className 就必须是带命名空间的完整类名,例如$className= 'App\Models\User'; |