【问题标题】:How do I change the namespace of my application in Laravel?如何在 Laravel 中更改应用程序的命名空间?
【发布时间】:2019-12-24 00:28:35
【问题描述】:

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

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

结果是:“app”命名空间中没有定义任何命令。

【问题讨论】:

  • 试试这个php artisan app:namespace TestApp
  • 这里有很好的解释:stackoverflow.com/questions/28822542/…
  • 在 laravel 版本 7 中,此命令已被弃用。我们如何在 Laravel 版本 7 中使用命令来实现这个目标?

标签: php laravel


【解决方案1】:

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

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

编辑

我想你一定是在你的应用程序中触及了一些东西,因为命令 php artisan app:name AppName 应该可以工作,我刚刚测试了它。

你有没有尝试过自己更改命名空间?

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


【讨论】:

  • 我想将我的应用程序的默认命名空间从 App 更改为其他名称。
  • 对我不起作用。你是对的,我的应用程序中可能进行了更改,因此 app:name 不起作用。 app:name 在我的全新安装中工作。
【解决方案2】:

看看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 文档中的一样简单。谢谢!
  • 我错了,@bjovanov 说有一条命令,我已经更新了答案
【解决方案3】:

laravel 把这个命令改成app:namespace

你必须这样做

php artisan app:namespace TestApp

【讨论】:

  • 该命令已在 Laravel 6 中移除
猜你喜欢
  • 1970-01-01
  • 2016-10-14
  • 2020-01-25
  • 2015-03-06
  • 1970-01-01
  • 2015-05-08
  • 1970-01-01
  • 2015-09-21
  • 2013-04-04
相关资源
最近更新 更多