【Laravel】Class not foundエラーが発生した時の対処

2020年8月14日金曜日

Laravel PHP

t f B! P L

【Laravel】Class not foundエラーが発生した時の対処

Laravelでクラスを新しく作った時に、「Class xxxx not found」エラーが表示された時の対処法です。

「Class xxxx not found」発生時の対処

クラス名やパスの設定が間違っていないときはLaravelのルートディレクトリで以下のコマンドを実行することで解消されることがあります。

composer dump-autoload

このエラーが出たときは大抵このコマンドでエラーは解消できますが、解消できない場合はクラスが正しく定義されているのかなど細かな調査が必要になってきます。

dump-autoloadって?

PHPでは通常、別のファイルのプログラムを利用する場合、次のように使用したいPHPファイルのパスを指定して読み込む。

require_once "sample.php";

Laravelなどのフレームワークでは、オートローダの機能により、対象となるphpファイルが自動的に読み込まれるため、requirerequire_onceは不要です。

オートローダの対象にするディレクトリは、composer.jsonで設定します。。
Laravelのプロジェクトを作成すると、デフォルトでcomposer.jsonに次のように設定され、appフォルダ配下のphpファイルは自動的にvendor/composerフォルダにクラスパスが作成されます。

"autoload": {
  "psr-4": {
    "App\\": "app/"
  },
  "classmap": [
    "database/seeds",
    "database/factories"
  ]
},

artisanコマンドでモデルやコントローラーを作成した場合は、自動的にオートロードが行われますが、手動でファイルを作成した場合などでは、オードロードが行われないことがあるため、composer dump-autoloadコマンドでクラスパスを作成します。

スポンサーリンク

QooQ