Laravel:Controllerのコピー保存は要注意!

Laravel:Controllerのコピー保存は要注意!

Controllerのコピー保存が原因のエラーに遭遇しました

理由を探し当てるのに約1時間を要したので備忘録として保存です。

昨日まで表示できていたページがエラーで表示できなくなりました。

【Method ○○○ does not exist 】メソッド○○○が存在しません。

昨日まで表示てきてたので更新でなんかやらかしたか?と思い保存していたバックアップで上書き実行。
これで表示が戻れば原因の特定に近づけると思っていたのですが、残念。戻りませんでした。

昨日行った事と言えば、シーダーの作成と多対多リレーションのページ作成くらい。
う~ん、全く不明。という事でGoogle先生に教えていただきました。

まずはエラーをコピーしてそのまま検索!

Method ○○○ does not existをコピー。

○○○は私の作ったメソッド名なのでこいつを省いて『Method does not exist』+『Laravel』で検索実行

laravel5.1のルーティングとコントローラの呼び出しについて質問です。
[ApexCode]不可解なMethod does not exist or incorrect signature

上記2つの記事より理由を推測、解決にこぎつけました。

鍵は以下の情報

  • composer dump-autoload
  • 組み込みクラスと同名のユーザー定義クラスが存在しており、そちらを参照しようとしていたせいだった。

そういえば昨日、シーディングの実行前に『composer dump-autoload』実行してました。
オートローダーに誤ったデータが登録された?

『composer dump-autoload』再実行で原因判明

原因はController変更時にバックアップとして作成した旧○○○Controllerの残骸でした。

昨日行ったdump-autoloadでこのバックアップ情報も読み込んだため同名のユーザー定義クラスが重複。「どっち読めばいいの??」となっていたようです。

なるほど。

早速修正に入ります。

旧○○○Controllerを削除&composer dump-autoload再実行で解決

バックアップのコントローラーを削除して『composer dump-autoload』を再実行!

無事エラーなくページが表示されました。

こういうのって理由がわかれば早いんですけど、そこにたどり着くまでが大変なんですよね。

知識が欲しいです。