概要
- use 文は正しいはずが、あるはずのクラスがないと怒られた。
- 引数なしのindex()メソッドの場合は正常に動いた。
- ファイル名のタイポが原因であった。
詳細
エラーメッセージ
ReflectionException: Class "App\Http\Requests\StoreCardFormatRequest" does not exist in file /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ResolvesRouteDependencies.php on line 81
要は、StoreCardFormatRequestというクラスがないと怒られている。
useなどに関しては、問題ないと判断し下記コマンドを実行したところskipしたと警告が発生した。
コマンド
dump-autoload
Generating optimized autoload files
Class App\Http\Requests\StoreCardFormatRequest located in ./app/Http/Requests/StorCardFormatRequest.php does not comply with psr-4 autoloading standard. Skipping.
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
エラー内容についてChatGPTに確認したところ
エラーメッセージによれば、StoreCardFormatRequest クラスのファイル名がPSR-4のオートローディング規約に違反しています。PSR-4は、クラス名とファイル名が一致していることを要求します。この場合、ファイル名が StorCardFormatRequest.php となっており、e が抜けているためにクラスが見つからないというエラーが出ています。
とのことであった。
実際に確認したところ、ファイル名のタイポを修正し忘れていた。
タイポを修正したところ実際に稼働するようになった。
まとめ
Laravelはワンコマンドでファイルの作成やクラスの外枠を創れる半面、タイポの修正には注意が必要であると感じた。ひとまず同じようなエラーが発生したときは、オート―ディングを試してみようと感じた。