我试图使用这个作曲家包与一个新的项目,我正在工作的https://packagist.org/packages/activecollab/activecollab-sdk。然而,当我尝试创建一个新类时,我总是会得到以下错误。
Fatal error: Class 'ActiveCollab\Client' not found抛出此错误的文件如下所示。
require "vendor/autoload.php";
new ActiveCollab\Client;它只是用来测试文件是否被正确加载。我试图使用的文件的composer.json看起来是这样的。我觉得这个文件有问题,但我想不出是什么。
stuff...
"autoload": {
"psr-0": {
"ActiveCollab\\": "ActiveCollab"
}
}
...stuff

同时查看autload_namespaces.php文件,它也是这样生成的。
<?php
// autoload_namespaces.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'ActiveCollab' => array($vendorDir . '/activecollab/activecollab-sdk/ActiveCollab'),
);我在我自己的一些composer包中使用了psr-0,除了名称空间中的camel情况之外,一切看起来都是正确的,但我并不认为这在psr-0的php提案中是不允许的。
谢谢你的帮助,这让我发疯了。
发布于 2014-06-11 22:35:53
问题是:您不能简单地添加一个带有随机自动加载配置的composer.json文件,并希望它能够工作--它实际上必须与您正在使用的命名方案相匹配。这就是这个项目出错的原因,没有人对它进行测试。这可能意味着没有人使用这个库,而且由于缺乏兴趣,您可以期望创建者不会提供支持。
但是让我们看看他们如何在我的拉力请求上做出反应,让事情恢复正常。
发布于 2014-06-11 21:16:20
composer配置看起来很好:只是在类名中省略了前导\吗?
new \ActiveCollab\Client;如果您的代码位于另一个名称空间中,您将需要它,因为它将相对于当前命名空间加载它。
编辑:我刚刚检查了那个库,即使使用了上面的修复程序,自动加载程序也不能很好地工作。自动加载程序也可能会因为库中指定一个composer.json自动加载程序的PSR0文件而中断,但是使用".class.php“扩展(不兼容PSR0 )。库中包含了一个autoload.php文件,所以如果您只是require该文件,那么您应该能够使用以下类:
require 'vendor/activecollab/activecollab-sdk/ActiveCollab/autoload.php';
做完这件事后,我就能用这门课了。
https://stackoverflow.com/questions/24172622
复制相似问题