我在这个上拉我的头发,这种情况不常发生。
我正在尝试使用作曲家自动加载器,我的目录。自动加载器与另一个目录完美配合。
我正在使用以下文件结构
-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();"
同时返回相同的错误。
我希望你们其中一个人知道这里发生了什么。 最好的祝福。 纳斯
答案 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',
因此,与其他提到的一样,可能是因为某些无效数据与您的代码不匹配。
有时候你会做一个修改(比如修正一个错字)并忘记重新生成自动加载器,一切看起来都不错。