首页 > 解决方案 > 类不符合 psr-4 自动加载标准。跳过

问题描述

我尝试使用 composer autoload 但我收到此错误

作曲家.json

{
    "autoload":{
        "psr-4":{
            "App\\":"app/"
        },
        "files": ["app/functions/helper.php"]
    },
    "require": {
        "vlucas/phpdotenv": "^2.4",
        "altorouter/altorouter": "^1.2",
        "philo/laravel-blade": "^3.1"
    },
    "config":{
        "optimize-autoloader":true
    }
}

我的终端输出

Generating optimized autoload files
Class App\Controllers\BaseController located in D:/php/Xamp/htdocs/MVC_PHP/app\controllers\BaseController.php does not comply with psr-4 autoloading standard. Skipping.
Class App\Controllers\IndexControllers located in D:/php/Xamp/htdocs/MVC_PHP/app\controllers\IndexControllers.php does not comply with psr-4 autoloading standard. Skipping.
Class App\RoutingDispatcher located in D:/php/Xamp/htdocs/MVC_PHP/app\routing\RoutingDispatcher.php does not comply with psr-4 autoloading standard. Skipping.
Generated optimized autoload files containing 508 classes

标签: phpcomposer-phppsr-4

解决方案


PSR-4标准要求您的文件和目录区分大小写,并且相应的类和命名空间必须使用 PascalCase。

对于一个App\Controllers\BaseController类,该文件应位于:

app/Controllers/BaseController.php

注意大写C

第二个错误:对于顶级命名空间之后的任何命名空间,必须有一个同名的目录。
您有一个App\RoutingDispatcher应该放置的类,app/RoutingDispatcher.php但该app/routing/RoutingDispatcher.php文件将对应于一个App\Routing\RoutingDispatcher类。
您必须更改该类的名称空间或移动文件。

如果您更改其命名空间,请务必app/routing使用前导大写字母重命名目录。


推荐阅读