如何在 Laravel 中更改应用程序的命名空间?



我无法在Laravel 5.8中更改应用程序的命名空间。

我正在使用工匠来更改它:php artisan app:name TestApp

结果是:">app"命名空间中未定义任何命令。

看看php artisan你应该有一个php artisan app:name NewNamespace命令以更改命名空间。确保您使用的是最新的 laravel 版本。

旧答案

若要更改应用的命名空间,必须编辑composer.json文件:

"autoload": {
"psr-4": {
"CustomNamespace\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
]
},

但是您还必须编辑app子文件夹和各种配置文件中的每个文件(例如在config/app.phpconfig/auth.php等中(。

完成所有这些操作后,您可以运行:composer dump-autoload

请记住,这是一种容易出错的方法,因为如果您忘记替换任何文件中的命名空间,任何内容都可能按预期停止工作。


另一种选择是使用所需名称创建自定义包,并将其注册到自定义命名空间。例如:

  • 在 laravel 安装的根目录中创建一个lib/yourpackage/src文件夹
  • 编辑composer.json文件以加载自定义代码:
"autoload": {
"psr-4": {
"App\": "app/",
"CustomNamespace\": "lib/yourpackage/src/",
},
"classmap": [
"database/seeds",
"database/factories"
]
},
  • 像以前一样composer dump-autoload运行
  • 现在,您可以通过引用您选择的自定义命名空间来在项目中的任何位置使用文件。

laravel 将此命令更改为app:namespace

你必须这样做

php artisan app:namespace TestApp

您是要更改应用程序的命名空间还是仅更改名称?

您想在命名空间中准确更改什么?

编辑

我认为您一定在应用程序中触摸了某些内容,因为命令php artisan app:name AppName应该可以工作,我刚刚对其进行了测试。

您以前是否尝试过自己更改命名空间?

否则,请尝试先composer dump-autoload以确保您的自动加载是最新的。


此功能已从 Laravel 6 中删除。不建议更改命名空间。

但是,如果要执行此操作,可以将命令添加到控制台/命令目录中

https://gist.github.com/isluewell/b824c0aef32f5007170fcd0d8498b657

最新更新