Laravel控制器运行提示syntax error, unexpected 'all'语法错误
Laravel控制器报
syntax error, unexpected 'all'错误的原因与修复方案 错误产生原因
- 核心问题是PHP语法使用错误:
all()是Eloquent模型内置的静态查询方法,调用静态方法不需要使用new关键字实例化对象。new关键字的作用是实例化指定类的对象,后接类名即可,你写的new shop::all()让PHP解析器无法识别语法结构,new和静态调用符::直接拼接属于非法语法,因此抛出unexpected 'all'的语法错误。 - 额外不规范点:Laravel模型遵循PSR命名规范,要求类名采用大驼峰格式,当前
shop的类名、文件名写法不规范,极端场景下可能触发类自动加载失败问题。
修复方案
直接移除调用all()方法前多余的new关键字即可,修正后的完整控制器代码如下:
<?php namespace App\Http\Controllers\administrator; use App\Http\Controllers\Controller; use Illuminate\Http\Request; // 建议同步将模型文件、类名调整为大驼峰格式的Shop use App\Models\Shop; class DashboardController extends Controller { public function __construct() { $this->middleware('auth'); } public function index() { // 移除new,直接通过类名静态调用all()方法 $sh = Shop::all(); return view('admin.dashboard', compact('sh')); } }
- 可选规范优化:找到
app/Models目录下的shop.php文件,将文件重命名为Shop.php,同时打开文件将内部的模型类名从shop改为Shop,和引入的命名空间保持一致,符合框架默认约定。
内容的提问来源于stack exchange,提问作者Bekr
相关产品推荐
相关产品推荐

