自定义自动加载程序的项目与作曲家PSR-4


Custom autoloader for project vs Composer PSR-4

我目前正在开发一个目录结构如下的小框架:

/
-- app
-- vendor
   -- framework-vendor
      -- framework-package
         -- src

目前我在我的框架的作曲家。

是两个PSR-4实例:
"autoload": {
    "psr-4" : {
        "FrameworkName''" : "src/",
        "": "../../../app"
    }
}

这样做的目的是位于app的实际项目可以使用使用'FrameworkName'foo'bar'Class的框架中的类,也可以使用使用'foo'bar'Class的自己的类。唯一的限制是供应商目录和应用目录之间的相对深度。

最好的方法是什么?只是包含第二个自动加载器或强制执行此目录结构,并让Composer负责生成自动加载器?

不强制相对路径深度的解决方案是使用Composer返回的自动加载器,如下所示:

$loader = require 'vendor/autoload.php';
$loader->add('', __DIR__ . '/app/');