Composer autoload - 未找到类异常

时间:2014-01-21 23:10:25

标签: php composer-php autoloader

我在这个上拉我的头发,这种情况不常发生。

我正在尝试使用作曲家自动加载器,我的目录。自动加载器与另一个目录完美配合。

我正在使用以下文件结构

-Root
 | application
   | Module
      | Users
         | Users.php

Users.php包含以下代码

<?php
namespace Module\Users;

class Users {
  public function test() { return "Testing hippie-yaay!"; }
}

composer.json包含以下psr-0自动加载

"psr-0":{"Module\\": "application/"}

在autoloader_namespaces.php中编译为以下

'Module\\' => array($baseDir . '/application'),

然后再次完全正确(我已经通过回显基础的应用程序字符串来测试它。这是完全正确的。

现在。在我的主要课程中,我做以下

<?php
namespace System\Core;
use Module\Users\Users;

    class Initiater {
      public function bootSystem() {
        $u = new Users();
      }
    }

(这基本上就是我所做的,当然我在顶部讨论的其他psr-0自动装载都在这个上面,工作得很好。)

然后我收到以下错误。

  

致命错误:

中找不到“模块\用户\用户”类

仅供参考:我尝试只使用"use Module\Users;""new \Module\Users\Users();"同时返回相同的错误。

我希望你们其中一个人知道这里发生了什么。 最好的祝福。 纳斯

3 个答案:

答案 0 :(得分:2)

new Users\Users();

可能就是你要找的东西

答案 1 :(得分:1)

如果有人仍然遇到这个问题:在深入了解ClassLoader.php findFileWithExtension()后,我发现对我来说这是一个案例问题,就像Sven所说的那样。该类名为AbcTest,文件名为ABCTest.php。更一般地说,确保文件名与类名,case和all匹配;只是这种情况下错误发现可能比较棘手。

答案 2 :(得分:1)

我有同样的问题。我做了一个&#34;作曲家更新&#34;它解决了我的问题。 出于某种原因,我在autoload_classmap.php中有一个名称空间不匹配

'Module' => $baseDir . '/application/Module/Users/Users.php',

并且缺少关键部分的一些信息:

'Module\\Users' => $baseDir . '/application/Module/Users/Users.php',

因此,与其他提到的一样,可能是因为某些无效数据与您的代码不匹配。

有时候你会做一个修改(比如修正一个错字)并忘记重新生成自动加载器,一切看起来都不错。