我已经构建了一个自己的web应用程序有一段时间了,但是在PHP中,我已经完全撞到了墙上,这是一个致命的错误。
短故事:我正在做这个项目的登录/用户部分。login.php处理登录内容,而student.php处理帐户内容。
在尝试完成doLogin时,我实现了一个致命错误,即student::getProfile()是一个“未定义的方法”。student::getProfile()在validate()类中作为validate()的一部分被调用。
如能提供任何帮助,将不胜感激!谢谢:)
编辑:在@deceze的帮助下,我能够将问题缩小到作曲家并没有自动控制我所有的类;只是一些类。有人能帮忙吗?
编辑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/"
]
}
}发布于 2015-05-10 05:26:40
在繁琐的搜索之后,我发现了我的方法中的错误--这是相当愚蠢的!
我有一个名为student的控制器,同时也有一个名为student的模型,因此,无意中试图调用一个在技术上已经被称为的类。因此,它在第一个student类中查找函数,而不是另一个实际包含该特定函数的类。
Composer没有意识到是否已经有一个名为预声明的类,只是在PHP错误日志中没有任何条目就否定它。
为了避免这个错误--以及将来任何进一步的类名混淆--我决定为core类和model类使用单独的名称空间。这就将这些类分割成这样的“子部分”,允许使用命名相同的类(尽管在不同的名称空间中)。
PHP手册:名称空间
Sitepoint:如何使用PHP名称空间,第1部分:基本
https://stackoverflow.com/questions/30140204
复制相似问题