如何在Laravel控制器和模型中自动加载常用类库与门面?
方案1:自定义 artisan 生成命令的 stub 模板(推荐)
Laravel 所有生成类文件的默认模板都存放在内置 stub 目录下,你可以发布这些模板到项目内自定义内容,后续用 make:controller、make:model 命令生成的文件会自动带上你预设的导入语句。
- 第一步:发布 stub 模板
执行命令:php artisan stub:publish
执行完成后会在项目根目录生成stubs文件夹,包含所有生成类对应的模板文件。 - 第二步:修改对应模板的头部导入
控制器模板对应文件:stubs/controller.stub、stubs/controller.invokable.stub等不同类型的控制器模板,打开后在头部预设的 use 区域添加你需要的代码:
模型模板对应文件:use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use DB;stubs/model.stub,同样在头部添加需要的 use 语句即可。 - 第三步:保存修改后,后续所有通过 artisan 命令生成的控制器、模型都会自动带上上述导入语句,无需手动添加。
方案2:注册全局类别名(无需编写 use 语句)
如果不想在每个文件都写 use 语句,可以直接在配置中给这些类注册全局别名,所有命名空间下都可以直接调用对应类:
- 打开配置文件
config/app.php,找到aliases数组,确认以下别名已经配置(Laravel 默认已经注册了大部分常用 Facade 的别名):'aliases' => [ // 保留原有其他别名 'Auth' => Illuminate\Support\Facades\Auth::class, 'Log' => Illuminate\Support\Facades\Log::class, 'DB' => Illuminate\Database\Capsule\Manager::class, 'Request' => Illuminate\Support\Facades\Request::class, ], - 配置完成后执行缓存清理命令:
php artisan config:clear - 之后不管在控制器还是模型中,不需要写对应的 use 语句,直接调用
Auth::user()、Log::info()、DB::table()、Request::input()即可正常使用。
注意:如果是控制器方法依赖注入的 Request 实例,比如
public function index(Request $request),这种场景还是需要写 use 语句导入Illuminate\Http\Request,或者显式写全类名public function index(\Illuminate\Http\Request $request),这种场景更推荐用方案1的 stub 模板处理。
方案3:基类封装(仅适合业务逻辑复用)
控制器默认都继承 App\Http\Controllers\Controller 基类,你可以把常用的操作封装到基类的方法中,减少子类的重复代码,但注意:父类的 use 语句不会继承给子类,所以这种方案不能解决子类需要重复写 use 导入的问题。
内容的提问来源于stack exchange,提问作者Code Plus
相关产品推荐
相关产品推荐

