【发布时间】:2014-10-14 19:55:36
【问题描述】:
我正在使用 Symfony 2.3 和 Composer,并使用 Composer 从远程存储库安装我的包。自己做这件事很好,但我遇到的问题是当我尝试从我的 Symfony2 包中要求另一个包时。
我的包在 src/ 文件夹中。
我已将此添加到我的 bundle 的 composer.json:
"require": {
"rackspace/php-opencloud": "1.10.*"
},
一切都安装好了,但我现在需要确保类是自动加载的(我认为是注册命名空间),但它不会这样做。
我实际上已经通过其他两种方式解决了这个问题,但是它们不够干净。我希望我的包处理依赖关系而不是应用程序文件夹或主要 Symfony2 composer.json。
不够好的解决方案:
(1) 如果我将 Rackspace 包添加到我的 symfony2/composer.json 中,那么一切正常。但这很糟糕,因为依赖于我的包而不是整个 Symfony2 框架。
(2) 如果我将这些添加到 app/autoload.php 那么它也可以工作:
$loader->add('OpenCloud', __DIR__.'/../src/rackspace/php-opencloud/lib');
$loader->add('Guzzle\\Http', __DIR__.'/../src/guzzle/http');
$loader->add('Guzzle\\Common', __DIR__.'/../src/guzzle/common');
...但这很混乱,并且依赖于捆绑包而不是应用程序。
我已经尝试了各种变体(在我的 bundle 的 composer.json 中),但它不起作用:
"autoload": {
"psr-0": { "OpenCloud": ["rackspace/php-opencloud/lib/", "rackspace/php-opencloud/tests/"] }
}
【问题讨论】:
标签: symfony composer-php