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


Custom composer autoload directory, loading multiple packages

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

所有的包都具有以下结构。

文件夹结构:

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)管理的。如果包已安装/更新,它们的自动加载定义将仅用于Composer的自动加载转储。这里没有作曲家处理,只是坐在一个文件夹里。

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

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