Laravel8でのルーティングで、コントローラーの指定の仕方4選


すごい久しぶりにqiita。
久しぶりにLaravel触ろうと思ったらLaravel8が出てて、試してみる。
Laravel7以前のと比べてRouteの書き方変わってたのでメモ。
(ぜんぜん大した話じゃないけどまだインターネッツに残っていないと思ったものは積極的に残すスタイル。)

前提: 今までの書き方

Route::get('hoge/fuga', 'Hoge\FugaController@index');

Laravel7までは有効。Laravel8ではエラーになります。

1: 教科書どおりがいい派

use App\Http\Controllers\Hoge\FugaController;
Route::get('hoge/fuga', [FugaController::class, 'index']);

使うクラスはすべてuseで指定しておいたほうが見通しがいい人向け。

2: useうざい派

Route::get('hoge/fuga', [App\Http\Controllers\Hoge\HugaController::class, 'index']);

useはなくして、並んだ絶対パス眺めるのが好きな人向け。

3: 前みたいにシンプルに書きたい派

Route::get('hoge/fuga', '\App\Http\Controllers\Hoge\FugaController@index');

Laravel8での新作法に違和感を感じる人向け

4: 完全に前のに戻したい派

app/Providers/RouteServiceProvider.php
を変更する必要があり、コメントアウトされている

// protected $namespace = 'App\\Http\\Controllers';

のコメントアウトを外して有効にする。

Route::get('hoge/fuga', 'Hoge\FugaController@index');

で以前と変わらない書き方ができる。


ぼくは2です。
いじょー!