klasa nie jest zgodna ze standardem automatycznego ładowania psr-4. Pomijanie [duplikat]

Nov 27 2020

Próbuję użyć automatycznego ładowania programu Composer, ale pojawia się ten błąd

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
        }
    
    }

moje wyjście terminala

    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

Odpowiedzi

14 AymDev Nov 27 2020 at 21:06

Standard PSR-4 wymaga, aby w plikach i katalogach była rozróżniana wielkość liter, a odpowiednie klasy i przestrzenie nazw znajdowały się w PascalCase.

W przypadku App\Controllers\BaseControllerzajęć plik powinien znajdować się w:

app/Controllers/BaseController.php

Zwróć uwagę na wielkie litery C

Drugi błąd : dla dowolnej przestrzeni nazw po przestrzeni nazw najwyższego poziomu musi istnieć katalog o tej samej nazwie.
Masz App\RoutingDispatcherklasę, która powinna być umieszczona jako, app/RoutingDispatcher.phpale app/routing/RoutingDispatcher.phpplik odpowiadałby App\Routing\RoutingDispatcherklasie.
Musisz zmienić przestrzeń nazw tej klasy lub przenieść plik.

Jeśli zmienisz jego przestrzeń nazw, pamiętaj, aby zmienić nazwę app/routingkatalogu na początkową wielką literę.