Laravelで謎エラー
久しぶりにLaravelを触ってます。
謎現象が起きたのでメモ。
ちなみに問題は解決したのですが謎は解けてないので、ご存知の方からのコメントをお待ちしています。
環境
ubuntu 20.04(WSL)
PHP 7.4
Laravel 6.19.1
VSCode
現象
php artisan serve
を叩くと下記エラーを吐く。
BadMethodCallException : Method Illuminate\Routing\Route::get does not exist.
原因
routes/web.php
で記述されている下記のuseがおかしい。
use Illuminate\Routing\Route;
解決方法
use Illuminate\Routing\Route;
を
use Illuminate\Support\Facades\Route;
に書き換える
不明な事
Laravelのプロジェクトを作成した際に、上記のuse文は予め記載されていた。
ただ、プロジェクトを作成してすぐサーバーを立ち上げて、127.0.0.1:8000
にアクセスした際にはちゃんと初期ページが表示されていた。
これは推測だけど、新しいコントローラーを作成した後にサーバーを立ち上げようと思ったらこの現象が起きた。
また、このuse文がなくても何故か正常に動く。
この挙動がほんと謎。
一体どこから呼ばれてるんだ...
なんか怖い。
<?php /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ // 何故これで動くの...?このRouteクラスとgetメソッドはどこから呼ばれてるんだ...? Route::get('/', function () { return view('welcome'); });
まとめると...
1. なぜデフォルトで間違ったuse文が記述されていたのか
2. useを記載しなくても動くのは何故か
この2点が本当に謎。
ただ、2に関してはもしかしたらオートローディングってのが関係してるかもしれない。
まだあんま調べてないけど。
これじゃなかったらもうホントわけからん
久しぶりのPHPな上に、フレームワーク分からなくて色々困惑している。
出鼻をくじかれるのはお約束。
まぁ勉強しながらまったりやって行こう。
参考URL
php - Call to undefined method Illuminate\Routing\Route::get() - Stack Overflow
composerについて初期学習まとめ - Qiita