【发布时间】:2015-05-09 12:57:29
【问题描述】:
我一直在构建自己的网络应用程序有一段时间了,但由于 PHP 中的一个致命错误而完全碰壁。
简短的故事:我正在处理项目的登录/用户部分。 login.php 处理登录信息,student.php 处理帐户信息。
当尝试完成doLogin 时,我遇到了致命错误,指出student::getProfile() 是一个“未定义的方法”。 student::getProfile() 在login 类中作为validate() 的一部分被调用。
任何帮助将不胜感激!谢谢:)
编辑:在@deceze 的帮助下,我已经能够将问题缩小到 Composer 没有自动加载我的类的所有;只有一些。有人可以帮忙吗?
编辑 2: 我检查了由 Composer 生成的autoload_classmap.php,我的所有核心类和模型都列出了!如果它们列在类映射中,为什么 Composer 不加载它们?
项目目录
application/
config/
controller/
core/
(core items such as auth, app, view rendering + view controller)
model/
(speciality functions such as login, registration + user)
view/
public/
index.php
.htaccess
vendor/
autoload.php
composer.json
.htaccess
note: /public/index.php calls `require '../vendor/autoload.php';`
composer.json
"autoload": {
"psr-4": {
"": [
"application/core/",
"application/model/"
]
}
}
【问题讨论】:
-
一开始就在 login.php 中包含那个 student.php 文件。
-
@deceze
Call to undefined method student::getProfile() in login.php -
这应该工作。唯一的解释是该文件未包含在内。
-
通过添加
echo "I'm included!"来简单地确认文件是否被包含。唯一的其他解释是名称空间和/或代码中某处的不可见字符;即类或函数的名称实际上不同。 -
因此您已将问题范围缩小为自动加载器的问题。请相应地重写问题以专注于这一点,这不会在 cmets 中解决。
标签: php composer-php