如何使用composer定义autoload.php的路径

时间:2014-02-25 22:30:38

标签: composer-php autoload

我有一个作曲家项目,称之为MyVendor\Database。该项目使用作曲家和自动加载。该项目中有几个文件包含:

require_once __DIR__."/../vendor/autoload.php";

以便使用自动加载。

这一切都很有效,直到我将MyVendor\Database包含在另一个项目中。

我有另一个项目,称之为MyVendor\CoolPackage,需要MyVendor\Database

我在CoolPackage上运行composer install,然后将MyVendor\Database下载到供应商文件夹中。

此处的问题是vendor\MyVendor\Database中的我的文件失败,因为他们调用require_once __DIR__."/../vendor/autoload.php",但\vendor\MyVendor\Database内没有供应商文件夹。

1 个答案:

答案 0 :(得分:1)

composer.json中,您定义了自动加载方案。由于您现在发现自己的原因,将Composer自动加载到任何应该可自动加载的文件中并不是一个好主意,不仅在该应用程序或模块内,而且在任何其他应用程序中也是如此。

基本上,任何Composer项目中的文件都应该根据PSR-0或4自动加载的定义进行划分:它们要么只是声明类或函数而没有任何副作用(比如执行代码),要么它们执行代码而不执行定义类或函数。只有以前的文件可以自动加载(除了函数,只能通过加载包含files自动加载部分的文件来声明),后者不应自动加载。

然后它应该变得相对容易:当该组件包含在另一个应用程序中时,也可以使用所有可以自动加载的类。不能直接使用任何其他非类的东西。