laravelを学習している際に、新しいコントローラーを作成した後、php artisan serve
を使用したところ、BadMethodCallException : Method Illuminate\Routing\Route::get does not exist.
というエラーが発生しました。
BadMethodCallException : Method Illuminate\Routing\Route::get does not exist. at /Applications/MAMP/htdocs/task_test/vendor/laravel/framework/src/Illuminate/Support/Traits/Macroable.php:77 73| */ 74| public static function __callStatic($method, $parameters) 75| { 76| if (! static::hasMacro($method)) { > 77| throw new BadMethodCallException(sprintf( 78| 'Method %s::%s does not exist.', static::class, $method 79| )); 80| } 81| Exception trace: 1 Illuminate\Routing\Route::__callStatic("get") /Applications/MAMP/htdocs/task_test/routes/web.php:18 2 require("/Applications/MAMP/htdocs/task_test/routes/web.php") /Applications/MAMP/htdocs/task_test/vendor/laravel/framework/src/Illuminate/Routing/RouteFileRegistrar.php:35 Please use the argument -v to see more details.
このエラーを読み解くと、
routes/web.phpで記述されている下記のuseがおかしいということが判明し、
use Illuminate\Routing\Route;
をuse Illuminate\Support\Facades\Route;
に書き換え、再起動すると正常にサーバーが動き、127.0.0.1:8000にアクセスすると初期ページが表示されました。
しかし、Laravelのプロジェクトを新規作成した際に、use Illuminate\Routing\Route;
は予め記載されていて、新規作成後すぐにサーバーを立ち上げた時は、127.0.0.1:8000にアクセスすると初期ページが表示されました。
また、試しにuseを記述しなくてもサーバーが動きました。
上述した現象から下記2つの疑問が生まれ
・ どうして新しいコントローラーが作成された時にエラーが発生するuse文が記述されていたのか?
・ useを記載しなくても動くのは何故?
の2つがどうしても分かりません。
何方かご教授頂けると嬉しいです、、、。
質問の意味が分からない、勘違いをしている箇所がございましたら、ご指摘のほど宜しくお願い致します。
##環境
PHP 7.4
Laravel 6
VSCode
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。