作曲家 psr-4 使用相同的键自动加载

Posted

技术标签:

【中文标题】作曲家 psr-4 使用相同的键自动加载【英文标题】:composer psr-4 autoload with same key 【发布时间】:2017-07-15 08:40:25 【问题描述】:

我在 composer.json 中有这个设置

"autoload": 
        "psr-4": 
            "": "src/",
            "App\\": "src/App"
        

    

使用此文件夹结构:

src
---App
------MyClass.php --> namespace \App;
---Somedir
------Otherdir
---------OtherClass.php --> no namespace

src/App 文件夹下的文件会被加载,Somedir 下的文件不会被加载。

有什么问题吗?

【问题讨论】:

【参考方案1】:

您可以使用自动加载器的组合,因此请调整您的 composer.json 以对具有命名空间的类使用 PSR-4 自动加载器,对没有命名空间的类使用类映射自动加载器:


  "autoload": 
    "classmap": [
      "src/SomeDir"
    ],
    "psr-4": 
      "App\\": "src/App"
    
  

有关参考,请参阅https://getcomposer.org/doc/04-schema.md#autoload。

使用类映射自动加载器的缺点是,如果在通过类映射自动加载器加载的目录中添加或删除类,则需要重新生成类映射:

$ composer dump-autoload

【讨论】:

以上是关于作曲家 psr-4 使用相同的键自动加载的主要内容,如果未能解决你的问题,请参考以下文章

找不到作曲家phpunit psr-4自动加载类

作曲家更新错误不符合 psr-4 自动加载标准。跳过

如何使用 Composer 从供应商外部自动加载类?

使用单个文件中的类作曲家自动加载

作曲家自动加载 Laravel 5.5

如何检查是不是正在使用作曲家的自动加载器?