PHP Composer Autoloader简单结构

时间:2015-05-26 19:33:34

标签: php composer-php autoloader psr-4

我有Composer工作,我想使用自动加载器加载我的类,但它不起作用。这是我的目录结构。我一开始就很简单。

index.php
composer.json
Vendor
controllers/webgl.php

在webgl.php里面我有:

namespace controllers;

class webgl {
    public function lesson1() {

    }
}

在index.php中我有:

require('vendor/autoload.php');
//require_once('controllers/webgl.php');

$webglController = new \controllers\webgl;

我的composer.json为自动加载定义了这个:

"autoload": { 
    "psr-4": { 
        "controllers\\": "controllers/" 
    } 
}

如果我取消注释第二个要求,则脚本可以正常工作,否则我会收到“致命错误:第5行的/vagrant/index.php中找不到类'控制器\ webgl'”。

我认为文件夹结构,类名称空间和类名都符合psr-4。但我必须误解一些事情。我已经阅读了大量类似的问题,但没有人能够为我排序。

任何人都可以告诉我为什么我的班级没有加载以及我应该怎么做才能修复它?

2 个答案:

答案 0 :(得分:1)

您定义了autoload directive吗?

您需要将它添加到您的composer.json文件中:

"autoload": {
    "psr-4": {
        "controllers\\": "controllers/"
    }
}

将自动装带器指向正确的方向,然后运行

composer update  

来自项目目录中的终端。现在该类将加载而不明确要求其文件。

答案 1 :(得分:1)

确保在对composer dump-autoload进行更改后至少运行composer.jsoncomposer installcomposer update也会这样做。

根据您的问题和评论,在您为自己的代码添加自动加载定义后,您似乎没有运行该命令。