Ich habe hunger

あふりかエンジニア、アフリカ向けのB2BのSaaSを開発する

Laravel4でClass 'Models\User' not foundと言われた

Laravel4では新しいクラスファイルを作成した場合、プロジェクトルートにて、composer dump-autoloadを実行しなければならない。
このコマンドを実行することによって、ShopControllerの存在がプロジェクトに認識されることになる。
Generating autoload filesと表示されればOK。
正しく、ShopControllerの存在が認識されているか確認するには?
vendor/composer/autoload_classmap.phpを開いてみればわかる。
長~い配列の中に、自身で作成したShopControllerがオートロード一覧に入っていれば、OK。
見てみれば、なんとなくわかるように、ファイルとクラス名のマッピングが行われており、ファイル名は実はshop.phpでもOKだったりする。
例えば、ファイル名がyamada.phpでもコードの中でShopContorllerと書いてあれば、ShopControllerがマッピングされる。もちろん、望ましくはない。

と書いている通り、cocmposer dump-autoloadをしてなかった。
CakePHPではこういうことはなかったので、結構忘れがちなのでメモ。

参考

Laravel4でコントローラーの作成とモデルの作成に関する簡単なまとめ - ECサイト運営開発記