我无法在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.php
,config/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