作曲家自动加载的麻烦:不加载所有文件



我已经构建了自己的网络应用程序已有一段时间了,但在php中遭到致命错误。

短篇小说:我正在研究项目的登录/用户部分。login.php处理登录工作,而student.php处理帐户内容。

尝试完成doLogin时,我达到了致命错误,该错误指出student::getProfile()是"未定义的方法"。student::getProfile()被称为login类中validate()的一部分。

任何帮助将不胜感激!谢谢:)

编辑:在@deceze的帮助下,我能够将问题缩小到我的课程中不自动加载 all 的事实;只有一些。有人可以协助吗?

编辑2:我检查了由作曲家生成的autoload_classmap.php,列出了我所有的核心类和模型!如果它们在Classmap中列出,为什么作曲家不加载它们?


项目目录

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/"
        ]
    }
}

经过非常乏味的搜索,我发现了错误的错误 - 这很愚蠢!

我有一个名为student的控制器,同时还拥有一个名为student的模型,因此我是无意中尝试调用已经称为的类的类。因此,它是在第一个student类中查看该功能的,而不是实际包含特定函数的另一个。

作曲家没有意识到是否已经有一个名称预定的类,只是在没有任何条目的情况下对其进行否定。

为了避免此错误 - 以及将来的任何其他类名称混音 - 我决定使用core类和model类的单个名称空间。这将这些类别分为"子段",从而允许使用名为相同的类(尽管在不同的名称空间中)。


PHP手册:名称空间

站点点:如何使用PHP名称空间,第1部分:基础知识

相关内容

  • 没有找到相关文章

最新更新