プログラミングは面白い

プログラミングの事を中心に色々書いていきます

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