Laravel8のルーティング


はじめに

laravelの8でこれまでのバージョンとルーティングの書き方が変わったようなので、変更点を記載する。

前提

PostControllerのindexアクションを呼びたい時

PostController.php
<?php

namespace App\Http\Controllers;

use App\Models\Post;

/**
 * Class PostController
 * @package App\Http\Controllers
 */
class PostController extends Controller
{
    /**
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function index()
    {
        $posts = Post::all();
        return view('post.index', ['posts' => $posts]);
    }

}

laravel8より前

web.php
<?php
use Illuminate\Support\Facades\Route;

Route::get('/posts', 'PostController@index');

laravel8

web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PostController;

Route::get('/posts', [PostController::class, 'index']);

まとめ

laravel8からはコントローラーをweb.phpでuseしてあげないといけなくなったみたいですね。
明示的にどのコントローラーが使われているのかが分かるけど、記述量が増えちゃいますね。
これは賛否両論ありそう。

参考

laravelドキュメント