Class not found
LaravelでクラスやFacadeが見つからない場合に発生するエラー
概要
Class not found は、LaravelでPHPクラスをオートロードできない場合に発生するエラーです。名前空間の設定ミス、Composerのオートロード未更新、ファイル名の不一致などが原因です。
エラーメッセージ
Error: Class 'App\Services\UserService' not found
Target class [App\Http\Controllers\UserController] does not exist.
Class 'App\Models\User' not found in /var/www/html/app/Http/Controllers/UserController.php on line 15
原因
- オートロード未更新: 新しいクラスを追加後、composer dump-autoloadを実行していない
- 名前空間の不一致: ファイル内の名前空間とディレクトリ構造が一致していない
- ファイル名の不一致: クラス名とファイル名が異なる(PSR-4違反)
- use文の欠落: クラスをインポートしていない
- キャッシュの問題: 設定やルートのキャッシュが古い
解決策
1. Composerオートロードを再生成
| |
2. 名前空間とディレクトリ構造を確認
| |
3. ファイル名とクラス名を一致させる
# PSR-4規約: クラス名とファイル名は完全一致(大文字小文字含む)
❌ app/Services/userservice.php → class UserService
✅ app/Services/UserService.php → class UserService
4. use文でクラスをインポート
| |
5. Laravelキャッシュをクリア
| |
6. composer.jsonのautoload設定を確認
| |
新しいディレクトリを追加した場合:
| |
設定変更後は必ず実行:
| |
7. Facadeが見つからない場合
| |
または use文で直接インポート:
| |
よくあるケース
Modelの場所が変わった(Laravel 8+)
| |
ServiceProviderでのバインディング
| |
Laravel の他のエラー
この記事は役に立ちましたか?