自定义 composer 自动加载目录,加载多个包

Custom composer autoload directory, loading multiple packages

我正在 Laravel 5 应用程序中开发一组 packag。

所有包都具有以下结构。

文件夹结构:

Vendor/Package/src

composer.json

"autoload": {
    "psr-4": {
        "Vendor\Package\": "src/"
    }
},

我希望能够在 vendors/ 文件夹之外有一个单独的文件夹,其中包含正在开发中的包。因为它们是应用程序的基础。注意:这些包​​不会通过 composer 下载,只是使用 composer 自动加载。

例如

\Laravel-App
    \app
    \bootstrap
    \config
    \database
    \public
    ...
    \src

包含上述所有包的 \src 目录。

每个包中有一个 composer.json 是无关紧要的,因为它们还没有被 composer (, yet) 管理。如果包是 installed/updated,它们的自动加载定义将仅用于 Composer 的自动加载转储。 这里没有由 Composer 处理,只是坐在一个文件夹中。

有多种方法可以解决自动加载问题。 你可以:

  • 使用 PHP 自动加载函数注册您自己的自动加载器(在 bootstrap 期间)
  • 使用 Laravel 的自动加载器添加这些包的路径(在应用 bootstrap 期间,在 laravel 自动加载器初始化之后的某处)
  • 使用 Composer 的自动加载器将路径添加到这些包(在应用 bootstrap 期间,在 Composer 初始化之后)
  • 但最简单的方法是在主应用程序的 composer.json 文件的自动加载部分定义映射。然后它们将包含在转储的自动加载器中,在安装或更新您的 Composer 管理的依赖项之后。