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

时间:2015-04-01 03:40:30

标签: php laravel package composer-php laravel-5

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

所有包都具有以下结构。

文件夹结构:

Vendor/Package/src

composer.json

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

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

e.g。

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

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

1 个答案:

答案 0 :(得分:0)

每个包中都有一个composer.json是不相关的,因为它们不是由composer管理的(但是)。如果安装/更新软件包,它们的自动加载定义将仅用于Composer的自动加载转储。 这里没有Composer处理,只是坐在一个文件夹中。

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

  • 使用PHP自动加载功能注册您自己的自动加载器(在引导期间)
  • 使用Laravel的Autoloader添加这些软件包的路径(在app bootstrap期间,在laravel autoloader init之后的某个地方)
  • 使用Composer的Autoloader添加这些软件包的路径(在应用程序引导期间,在Composer init之后)
  • 但最简单的方法是在主应用程序的composer.json文件的自动加载部分中定义映射。然后,在安装或更新Composer托管依赖项后,它们将包含在转储的自动加载器中。