2017-08-10 95 views
-1

我很困惑,为什么我无法更改作曲家包的名称空间。我正在使用我的供应商目录中的包运行laravel应用程序。为什么我不能更改作曲家包名称空间?

所以,这个包我composer.json包括:

{ 
    "autoload": { 
     "psr-4": { 
      "Spatie\\Backup\\": "src" 
     } 
    } 
} 

我想改变命名空间,例如:

{ 
    "autoload": { 
     "psr-4": { 
      "Spatie\\Backupdatabase\\": "src" 
     } 
    } 
} 

当我运行自动加载器的文件vendor/composer/autoload_psr4.php仍包含原来的命名空间,而不是更新的。我试过跑步

$ composer clear cache 

但这并没有什么区别。

我认为作曲家通过运行在供应商目录中的软件包自动加载,寻找composer.json文件和从'autoload'部分自动加载,但我现在想知道是否是这种情况。

我错过了什么?为什么它不会自动加载新的名称空间?

更新

我想原因编辑在包composer.json不会更新PSR4文件命名空间是由于installed.json文件。该文件包含实际安装的内容和指定的命名空间。如果我在该文件中更改包的名称空间并运行自动加载器,则更新的名称空间将生效。通过作曲家文档无法找到关于此文件的许多信息 - 我不确定何时写完文档?

+0

注意'Spatie'命名空间已经在使用和注册,请参阅https://packagist.org/packages/spatie/。如果您依赖任何这些软件包,或者打算发布您的软件包,则可能会遇到问题。 – localheinz

+0

嗨@localheinz,我只是使用Spatie包来追踪问题。我已经运行了自动加载器,并没有什么区别。谢谢 – user3455246

+0

*您运行自动装载机*是什么意思? – localheinz

回答

0

composer.json调整自动加载配置之后,你需要运行

$ composer dump-autoload 

仅供参考,请参阅:

+0

你甚至尝试过我在这里建议的吗?这应该是公认的解决方案,因为它正是你需要做的。 – localheinz

+0

我已经运行了composer dump-autoload,但是这本身并不起作用。只有在作曲家文件夹中先删除installed.json时才会发生更改。 – user3455246

相关问题