【问题标题】:PHP Composer Autoloader Simple StructurePHP Composer Autoloader 简单结构
【发布时间】:2015-08-08 15:30:01
【问题描述】:

我有 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。但我一定是误会了什么。我已经阅读了大量类似的问题,但没有一个能够为我排序。

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

【问题讨论】:

    标签: php composer-php autoloader psr-4


    【解决方案1】:

    您是否定义了autoload directive

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

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

    将自动加载器指向正确的方向,然后运行

    composer update  
    

    从项目目录中的终端。现在该类将在不明确要求其文件的情况下加载。

    【讨论】:

    • 我已经尝试过,但不确定它应该是什么,因为命名空间前缀已经与文件夹名称匹配。我试着把它们留空,我试过这样的: "autoload": { "psr-4": { "controllers\\": "controllers/" } } 但似乎都不起作用。有什么想法吗?
    • 您好,我添加了我必须做的事情的详细信息作为对您答案的编辑。希望这不是乱七八糟的。我是新来的。如果编辑正常,我会接受答案。干杯:)
    • @tobuslieven 很抱歉跳到这里,但我对您的问题有一些建议。首先:添加您拥有的有关该问题的所有信息。您的 composer.json 中已经有一些东西,但您的问题中缺少它。如果答案可以向您解释您理解中的错误,而不是在不知道您得出相同结果的情况下解释事情应该如何发展,那么答案可能会更适合该问题,从而忽略了仅省略了一个小细节的事实。其次,虽然我认为编辑答案通常很好,但应该是评论的答案可能会被删除。
    • @tobuslieven 我已批准您的编辑。约翰,如果您认为不合适,请随时回滚。
    • @sven 在我提出问题时,我的 composer.json 中没有该部分。我之前尝试过很多东西,但都没有奏效,所以我把它删除了。在阅读了约翰的答案后,我尝试将其重新添加,并在异地阅读了另一个教程后终于对其进行了排序。非常感谢您的回答并投了赞成票。
    【解决方案2】:

    确保在更改 composer.json 后至少运行 composer dump-autoloadcomposer installcomposer update 也会这样做。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-17
      • 2011-03-20
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      相关资源
      最近更新 更多