Lavarel8系のルーティングの記述が変わっている。

個人開発でやるときにどうせなら最新のlaravel8系で作っちゃおうとしたときにいきなりつまづいた笑

 

Route::resource('users', 'UsersController@index');

は、エラー

8では下記のようにする

Route::get('/users', [App\Http\Controllers\Api\UsersController::class, 'index']);

絶対パスを記入しなきゃあかんくなってる

どうしても前のに戻したいのなら app/Providers/RouteServiceProvider.php を変更する必要があり、コメントアウトされている

// protected $namespace = 'App\\Http\\Controllers'; <-これを外して有効にする
Route::resource('users', 'UsersController@index');

そしたら元のように使える👍

調べてたら

use App\Http\Controllers\UsersController;
からの
Route::get('/', [UsersController::class, 'index']);

って書き方もあるそうで,,,

彼が全部教えてくれた dev.to

あとどうして変更になったかざっくり調べたら、海外でこう言ってる人がいた。 you only need to import the class once.(unless using resources)

//Old
Route::resource('photos', 'PhotoController');
Route::get('/user', 'UserController@index']);
Route::post('/user', 'UserController@sore']);


//New
use App\Http\Controllers\PhotoController;
use App\Http\Controllers\UserController;

Route::resource('photos', PhotoController::class);
Route::get('/user', [UserController::class, 'index']);
Route::post('/user', [UserController::class, 'store']);

この場合だとリソースも減って、一回のインポートで済むからって事なのかな?

あともう一個!
https://freek.dev/1324-simplifying-controllers#controllers-are-better-off-without-a-default-namespace

IDEのPhpStormが関係してるっぽい! こいつの性能が良くなっていることにより、それに合わせて使いやすくなるように変えてるっぽいとのこと!(だいぶ自信がないけど笑)

最後は話それたけどそういうことっぽい!(どういうこと?)

それでは!