首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Composer Autoloading的问题:没有加载所有文件

Composer Autoloading的问题:没有加载所有文件
EN

Stack Overflow用户
提问于 2015-05-09 12:57:29
回答 1查看 563关注 0票数 4

我已经构建了一个自己的web应用程序有一段时间了,但是在PHP中,我已经完全撞到了墙上,这是一个致命的错误。

短故事:我正在做这个项目的登录/用户部分。login.php处理登录内容,而student.php处理帐户内容。

在尝试完成doLogin时,我实现了一个致命错误,即student::getProfile()是一个“未定义的方法”。student::getProfile()validate()类中作为validate()的一部分被调用。

如能提供任何帮助,将不胜感激!谢谢:)

编辑:在@deceze的帮助下,我能够将问题缩小到作曲家并没有自动控制我所有的类;只是一些类。有人能帮忙吗?

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

项目目录

代码语言:javascript
复制
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

代码语言:javascript
复制
"autoload": {
    "psr-4": {
        "": [
            "application/core/",
            "application/model/"
        ]
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-10 05:26:40

在繁琐的搜索之后,我发现了我的方法中的错误--这是相当愚蠢的!

我有一个名为student的控制器,同时也有一个名为student的模型,因此,无意中试图调用一个在技术上已经被称为的类。因此,它在第一个student类中查找函数,而不是另一个实际包含该特定函数的类。

Composer没有意识到是否已经有一个名为预声明的类,只是在PHP错误日志中没有任何条目就否定它。

为了避免这个错误--以及将来任何进一步的类名混淆--我决定为core类和model类使用单独的名称空间。这就将这些类分割成这样的“子部分”,允许使用命名相同的类(尽管在不同的名称空间中)。

PHP手册:名称空间

Sitepoint:如何使用PHP名称空间,第1部分:基本

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30140204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档