Die Klasse entspricht nicht dem PSR-4-Standard für das automatische Laden. Überspringen [Duplikat]
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
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\BaseController
Klasse 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\RoutingDispatcher
Klasse, die platziert werden sollte, app/RoutingDispatcher.php
aber die app/routing/RoutingDispatcher.php
Datei würde einer App\Routing\RoutingDispatcher
Klasse entsprechen.
Sie müssen den Namespace dieser Klasse ändern oder die Datei verschieben.
Wenn Sie den Namespace ändern, müssen Sie das
app/routing
Verzeichnis mit einem führenden Großbuchstaben umbenennen .