la classe n'est pas conforme à la norme de chargement automatique psr-4. Ignorer [dupliquer]

Nov 27 2020

J'essaie d'utiliser le chargement automatique du compositeur mais j'obtiens cette erreur

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

ma sortie de terminal

    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

Réponses

14 AymDev Nov 27 2020 at 21:06

Le standard PSR-4 exige que vos fichiers et répertoires soient sensibles à la casse et que les classes et espaces de noms correspondants soient en PascalCase.

Pour une App\Controllers\BaseControllerclasse, le fichier doit être situé dans:

app/Controllers/BaseController.php

Remarquez les majuscules C

2ème erreur : pour tout espace de noms après l' espace de noms de niveau supérieur , il doit y avoir un répertoire avec le même nom.
Vous avez une App\RoutingDispatcherclasse qui devrait être placée comme app/RoutingDispatcher.phpmais le app/routing/RoutingDispatcher.phpfichier correspondrait à une App\Routing\RoutingDispatcherclasse.
Vous devez modifier l'espace de noms de cette classe ou déplacer le fichier.

Si vous modifiez son espace de noms, veillez à renommer le app/routingrépertoire avec une majuscule en tête.