Composer:在多个位置查找命名空间类

时间:2016-09-06 21:37:32

标签: php oop composer-php

我正在试图找出如何让作曲家在2个目录下查找特定命名空间的类。我在想的是:

Default location:   /src/MyModule/myClass.php
Override location:  /config/override/MyModule/myClass.php

现在,我想使用composer配置自动加载器以检查Override位置下是否存在类。如果是,请使用此类。如果没有,请从默认位置加载该类。

使用composer这是可能的吗?或者我是否必须使用自己的自动加载器实现此逻辑?

1 个答案:

答案 0 :(得分:2)

来自Composer documentation

  

如果您需要在多个目录中搜索相同的前缀,那么   可以将它们指定为数组:

{
    "autoload": {
        "psr-4": { "Monolog\\": ["src/", "lib/"] }
    }
}

您当然会将其添加到composer.json文件中。要以编程方式执行此操作,您可以执行此操作:

$autoloader = require __DIR__.'/../vendor/autoload.php';

$autoloader->addPsr4('MyModule\\', [ '/first/dir/MyModule', '/another/dir/MyModule' ]);