Laravel 11自定义命名空间问题:Artisan命令生成代码仍用默认命名空间
解决Laravel 11 Artisan生成代码仍使用默认命名空间的问题
方法一:通过服务提供者全局设置默认命名空间
在你的Aggp\Providers\AppServiceProvider.php的boot方法中添加以下代码,强制所有生成类的命令使用自定义命名空间:
use Illuminate\Console\GeneratorCommand; public function boot() { // 为所有Artisan生成命令设置默认命名空间 $this->app->afterResolving(GeneratorCommand::class, function ($command) { $command->setNamespace('Aggp'); }); }
添加后执行缓存清理命令:
php artisan config:clear php artisan cache:clear
方法二:自定义Stubs模板(更彻底的方案)
如果需要完全控制生成代码的模板内容,可以自定义stubs文件:
- 在项目根目录创建
stubs文件夹 - 从
vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs目录中复制你需要修改的模板文件(比如model.stub、controller.stub等)到项目的stubs文件夹 - 将复制后的模板文件中的所有
App\替换为Aggp\ - 后续执行Artisan生成命令时,系统会自动优先使用项目根目录
stubs中的模板
方法三:临时指定命名空间(单次生效)
如果只是偶尔生成文件,可以在Artisan命令后添加--namespace参数手动指定:
php artisan make:model User --namespace=Aggp php artisan make:controller UserController --namespace=Aggp
额外检查项
- 确保
composer.json中的autoload部分已正确设置:
并执行过"autoload": { "psr-4": { "Aggp\\": "app/" } },composer dump-autoload - 确认所有现有文件的命名空间已替换为
Aggp\,且应用能正常运行
内容的提问来源于stack exchange,提问作者Gihan Dilusha
相关产品推荐
相关产品推荐

