首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于PSR-0自动加载的问题

关于PSR-0自动加载的问题
EN

Stack Overflow用户
提问于 2014-06-11 21:09:45
回答 2查看 242关注 0票数 0

我试图使用这个作曲家包与一个新的项目,我正在工作的https://packagist.org/packages/activecollab/activecollab-sdk。然而,当我尝试创建一个新类时,我总是会得到以下错误。

代码语言:javascript
复制
Fatal error: Class 'ActiveCollab\Client' not found

抛出此错误的文件如下所示。

代码语言:javascript
复制
require "vendor/autoload.php";

new ActiveCollab\Client;

它只是用来测试文件是否被正确加载。我试图使用的文件的composer.json看起来是这样的。我觉得这个文件有问题,但我想不出是什么。

代码语言:javascript
复制
stuff...

"autoload": {
      "psr-0": {
        "ActiveCollab\\": "ActiveCollab"
      }
    }

...stuff

同时查看autload_namespaces.php文件,它也是这样生成的。

代码语言:javascript
复制
<?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提案中是不允许的。

谢谢你的帮助,这让我发疯了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-11 22:35:53

问题是:您不能简单地添加一个带有随机自动加载配置的composer.json文件,并希望它能够工作--它实际上必须与您正在使用的命名方案相匹配。这就是这个项目出错的原因,没有人对它进行测试。这可能意味着没有人使用这个库,而且由于缺乏兴趣,您可以期望创建者不会提供支持。

但是让我们看看他们如何在我的拉力请求上做出反应,让事情恢复正常。

票数 1
EN

Stack Overflow用户

发布于 2014-06-11 21:16:20

composer配置看起来很好:只是在类名中省略了前导\吗?

代码语言:javascript
复制
new \ActiveCollab\Client;

如果您的代码位于另一个名称空间中,您将需要它,因为它将相对于当前命名空间加载它。

编辑:我刚刚检查了那个库,即使使用了上面的修复程序,自动加载程序也不能很好地工作。自动加载程序也可能会因为库中指定一个composer.json自动加载程序的PSR0文件而中断,但是使用".class.php“扩展(不兼容PSR0 )。库中包含了一个autoload.php文件,所以如果您只是require该文件,那么您应该能够使用以下类:

require 'vendor/activecollab/activecollab-sdk/ActiveCollab/autoload.php';

做完这件事后,我就能用这门课了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24172622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档