2012-12-15 44 views
9

我开始在一个项目中使用Composer,在这个项目中,我历来拥有版本控制下的所有依赖关系。Composer vs Symfony 2自动加载器

该项目目前使用Symfony 2 autoloader。由于Composer带有自己的自动加载机制(vendor/autoload.php),这让我想知道我是否仍然需要使用Symfony ClassLoader。

我以为我可以只使用自动加载作曲家自动加载到我的项目类和:

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

是否有使用作曲家自动加载整个项目的任何缺点?

Symfony自动加载器提供的功能是否在Composer自动加载器中找不到?

回答

13

您可以只需要作曲家自动加载器。它缺乏的唯一功能是ApcClassLoader,它可以加快APC的速度,但会带来一些复杂性(您必须在部署时清除缓存)。使用composer的-o标志(在安装或运行dump-autoload时)会给你一个类似于APC的速度但没有复杂性的类图。

+0

要使用-o(--optimize)选项,您需要在每个部署中使用'composer dump-autoload --optimize'生成类映射,而不是清除缓存,但同意这样做更为简单。即使按照此处所述的正确方式清除缓存,也很容易在阶段或发布之间获取缓存键冲突:http://stackoverflow.com/a/12859565/160565 –