我正在使用Composer为PHP项目安装软件包。我已经成功地为谷歌V3 API做到了这一点;Composer 正确安装了软件包,设置了 Composer 自动加载器,我可以通过在项目源代码中包含以下语句来引用 Google API 类:
require_once 'vendor/autoload.php';
我试图对一些 Zend 2 包做同样的事情。Composer 成功下载并安装了所需的 Zend 包,但是当我尝试在代码中引用类时,Composer 供应商/自动加载不起作用。具体来说,Zend类在Composer生成的vendor/composer/autoload_namespaces.php文件中被引用,但它们在vendor/composer/autoload_classmap.php中没有被引用,Zend也没有在Composer生成的vendor/composer/include_paths.php中被引用(与Google API不同,Google API被正确引用)。
谁能阐明为什么 Zend 不使用 Composer 自动加载器,或者这是预期的行为,我需要为 Zend 使用不同的自动加载机制?
由于 Zend Framework 确实遵循 PSR 标准,因此它只需要在 autoload_namespaces.php
中配置命名空间。这里没有错...
感谢您的回复。我最终发现这个问题是由于我没有使用完全限定的命名空间来引用 Zend 类引起的,即
$twitter = new ZendServiceTwitterTwitter($config);
而不是
$twitter = new Twitter($config);
我不明白我通过 Composer 使用的不同库使用不同的方法来加载类,例如 Composer 在 autoload_classmap.php 中为 Google Client API 生成条目,但在 Zend 中生成autoload_namespaces.php条目,而在autoload_classmap中没有任何内容,所以我假设我在 Composer 安装中做错了什么。