我想向zendframework/zend-db
包添加依赖项,所以我将其添加到我的composer.json:
"repositories": [
{
"type": "composer",
"url": "http://packages.zendframework.com/"
}
],
"require": {
"php": ">=5.3.2",
"symfony/class-loader": "dev-master",
"symfony/console": "dev-master",
"symfony/filesystem": "dev-master",
"symfony/finder": "dev-master",
"symfony/locale": "dev-master",
"symfony/yaml": "dev-master",
"doctrine/dbal": "dev-master",
"zendframework/zend-db": "dev-master"
}
问题是composer安装了整个zendframework/zendframework
包。
知道为什么吗?
如下所述http://packages.zendframework.com/#composerZF2现在提供了一个包含所有模块的composer存储库。
将回购添加到您的包中:
"repositories": [
{
"type": "composer",
"url": "http://packages.zendframework.com/"
}
],
从这里开始,你可以单独添加包裹:
"require": {
"zendframework/zend-config": "2.0.*",
"zendframework/zend-http": "2.0.*"
},
你只需要指定你想要的包,如果它们有依赖关系,它们将由compser解析。
尽管这似乎在自动取款机上不起作用。。。
这是来自zend-github中zend-db的composer.json。根据该文件,zend-db没有任何依赖关系。
这可能是因为您试图从dev-master下载包,而dev-master的composer.json中存在不匹配。
我建议您将所需的版本更改为类似2.0的版本。*然后重试
此外,尽管Zend框架是松散耦合的,但在旧版本的框架中,依赖关系并不明确。
例如,通过快速浏览ZEND1.9中zend_db的源代码,我发现它至少取决于以下包:
- 控制器
- Config
- 过滤器
- Json
- Loader(对于自动加载,我认为这可能没有必要,因为composer是自动加载程序)
- Uri
- 查看
- 野火
这些包可能有其他依赖项,因此下载大小也相应。无论如何,正如King所解释的,Zend Framework 2.0与1.9版本不同,可能这不适用于2.0
尝试检查某些包的依赖项中是否有一些php扩展。我试过安装zend-http软件包,但遇到了同样的问题。在这里,我发现了安装php_intl扩展的建议,因为zend-http包的zend-validate-subdependency需要它。一旦我将这个扩展添加到php.ini中,问题就解决了。