クラスはpsr-4自動読み込み標準に準拠していません。[重複]をスキップ

Nov 27 2020

Composer Autoloadを使用しようとしましたが、このエラーが発生します

composer.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

回答

14 AymDev Nov 27 2020 at 21:06

PSR-4規格では、大文字と小文字を区別すると、対応するクラスと名前空間がPascalCaseにあるように、あなたのファイルやディレクトリが必要です。

以下のためにApp\Controllers\BaseControllerクラスファイルがに配置する必要があります。

app/Controllers/BaseController.php

大文字に注意してください C

2番目のエラー最上位の名前空間の後の名前空間には、同じ名前のディレクトリが必要です。として配置する必要
があるApp\RoutingDispatcherクラスapp/RoutingDispatcher.phpがありapp/routing/RoutingDispatcher.phpますが、ファイルはApp\Routing\RoutingDispatcherクラスに対応します。
そのクラスの名前空間を変更するか、ファイルを移動する必要があります。

名前空間を変更する場合は、必ずapp/routing先頭の大文字でディレクトリの名前を変更してください。