Die Klasse entspricht nicht dem PSR-4-Standard für das automatische Laden. Überspringen [Duplikat]

Nov 27 2020

Ich versuche, Composer Autoload zu verwenden, erhalte jedoch diesen Fehler

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

mein Terminalausgang

    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

Antworten

14 AymDev Nov 27 2020 at 21:06

Der PSR-4- Standard verlangt, dass Ihre Dateien und Verzeichnisse zwischen Groß- und Kleinschreibung unterscheiden und die entsprechenden Klassen und Namespaces in PascalCase enthalten sind.

Für eine App\Controllers\BaseControllerKlasse sollte sich die Datei befinden in:

app/Controllers/BaseController.php

Beachten Sie den Großbuchstaben C

2. Fehler : Für jeden Namespace nach dem Namespace der obersten Ebene muss ein Verzeichnis mit demselben Namen vorhanden sein.
Sie haben eine App\RoutingDispatcherKlasse, die platziert werden sollte, app/RoutingDispatcher.phpaber die app/routing/RoutingDispatcher.phpDatei würde einer App\Routing\RoutingDispatcherKlasse entsprechen.
Sie müssen den Namespace dieser Klasse ändern oder die Datei verschieben.

Wenn Sie den Namespace ändern, müssen Sie das app/routingVerzeichnis mit einem führenden Großbuchstaben umbenennen .