Composer 说类不符合 psr-4 自动加载,但代码仍然可以工作

问题描述 投票:0回答:1

Test 类,位于 MyApp\src\models 文件夹中:

<?php

namespace MyApp\Models;

class Test 
{

    function __construct() {
        echo "class Test running...";
    }

}

项目根目录的索引页面:

<?php

require_once realpath("vendor/autoload.php");

use MyApp\Models\Test;

$test = new Test();

但是当我运行命令时:

composer dump-autoload -o

错误消息显示:

MyApp/src\models\Test.php does not comply with psr-4 autoloading standard. Skipping.

但无论如何它都会生成包含 autoload.php 和其他文件的供应商文件夹。并且index.php 工作正常。那么我在这里缺少什么?

php composer-php autoload psr-4
1个回答
0
投票

根据规范,您需要在 FirstCaps 中拥有命名空间路径。

您的路径是小写的

MyApp\src\models
但您的命名空间是 FirstCap:

<?php
namespace MyApp\Models;

如果您将文件夹重命名为

MyApp\src\Models
,您应该可以开始了。

如果您已经将代码提交到 git,并且使用的是 Windows PC,请注意,由于 NTFS 和 FAT 文件系统都不区分大小写,因此将文件夹从

models
重命名为
Models
时可能会遇到问题。您可能需要从
models
重命名为
somethingelse
(并提交),然后重命名为
Models
(并再次提交)

© www.soinside.com 2019 - 2024. All rights reserved.