クラスはpsr-4自動読み込み標準に準拠していません。[重複]をスキップ
Nov 27 2020
Composer Autoloadを使用しようとしましたが、このエラーが発生します
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にあるように、あなたのファイルやディレクトリが必要です。
以下のためにApp\Controllers\BaseController
クラスファイルがに配置する必要があります。
app/Controllers/BaseController.php
大文字に注意してください
C
2番目のエラー:最上位の名前空間の後の名前空間には、同じ名前のディレクトリが必要です。として配置する必要
があるApp\RoutingDispatcher
クラスapp/RoutingDispatcher.php
がありapp/routing/RoutingDispatcher.php
ますが、ファイルはApp\Routing\RoutingDispatcher
クラスに対応します。
そのクラスの名前空間を変更するか、ファイルを移動する必要があります。
名前空間を変更する場合は、必ず
app/routing
先頭の大文字でディレクトリの名前を変更してください。