【发布时间】:2014-02-11 19:21:17
【问题描述】:
我在这个问题上大发雷霆,但这种情况并不经常发生。
我正在尝试将 composers 自动加载器与我的目录一起使用。自动加载器与另一个目录完美配合。
我正在使用以下文件结构
-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'),
这又是完全正确的(我已经通过回显 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();" 都返回相同的错误。
我希望你们当中有人知道这里发生了什么。 最好的祝福。 乔纳斯
【问题讨论】:
-
将 json 更改为
"psr-0":{"Module": "application/"}会发生什么?松开尾部斜杠。 -
是否区分大小写?类名不区分大小写,文件名通常区分大小写 - 并且自动加载混合了两者。确保所有类名都正确写入文件名和代码中的用法。
-
“我正在为这个而烦恼”而不是那样,只是调试它?在 ClassLoader::findFile 函数中设置一个断点,看看它做错了什么。
标签: php composer-php autoloader