0

我有 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 中找不到类 'controllers\webgl'”。

我以为文件夹结构、类命名空间和类名都符合psr-4。但我一定是误会了什么。我已经阅读了大量类似的问题,但没有一个能够为我排序。

谁能告诉我为什么我的课程没有加载以及我应该做些什么来解决它?

4

2 回答 2

1

您是否定义了自动加载指令

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

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

将自动装载机指向正确的方向,然后运行

composer update  

从项目目录中的终端。现在该类将加载而无需明确要求其文件。

于 2015-05-26T19:38:05.817 回答
1

确保至少composer dump-autoload在对composer.json. composer install或者composer update也会这样做。

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

于 2015-05-26T22:29:10.790 回答