클래스가 psr-4 자동 로딩 표준을 준수하지 않습니다. 건너 뛰는 중 [중복]

Nov 27 2020

작성기 자동로드를 사용하려고하는데이 오류가 발생합니다.

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에 될 수있는 해당 클래스와 네임 스페이스로 파일 및 디렉토리를 필요로한다.

A의 App\Controllers\BaseController클래스 파일이 위치해야합니다 :

app/Controllers/BaseController.php

대문자를 주목하십시오 C

두 번째 오류 : 최상위 네임 스페이스 이후의 모든 네임 스페이스 에 대해 동일한 이름을 가진 디렉토리가 있어야합니다.
당신은이 App\RoutingDispatcher로 배치되어야 수업을 app/RoutingDispatcher.php하지만, app/routing/RoutingDispatcher.php파일이에 해당하는 것이다 App\Routing\RoutingDispatcher클래스입니다.
해당 클래스의 네임 스페이스를 변경하거나 파일을 이동해야합니다.

네임 스페이스를 변경하는 app/routing경우 선행 대문자로 디렉토리 이름을 변경해야합니다 .