LoginSignup
4

More than 5 years have passed since last update.

laravel で web.php, api.php をぼちぼち卒業してみませんか? sebastiaanluca/laravel-router のススメ

Posted at

タイトルのとおりなのですが、 https://github.com/sebastiaanluca/laravel-router が良いのでオススメしたい。

導入したらどうなるか

Class で Routing 書けるようになります!

<?php
declare(strict_types=1);

namespace App\Http\Routers;

use App\Http\Controllers\IndexController;
use SebastiaanLuca\Router\Routers\Router;

/**
 * Class IndexRouter
 * @package App\Http\Routers
 */
final class IndexRouter extends Router
{
    /**
     * @return void
     */
    public function map(): void
    {
        $this->router->group([
            'middleware' => ['web'],
            'prefix' => '/',
        ], function () {
            $this->router->get('', IndexController::class)->name('index');
        });
    }
}

こんな感じです。

この例では / へのアクセスを App\Http\Controllers\IndexController::__invoke で受ける例です。

※ 僕は、 single action controller を多用するのが好きなのでこのような使い方を良くします。

もし、 App\Http\Controllers\IndexControllerindex() method, create() method を用意する場合は、以下のように書けます。

// ..snip..
        $this->router->group([
            'middleware' => ['web'],
            'prefix' => '/',
        ], function () {
            $this->router->get('', IndexController::class.'@index')->name('index');
            $this->router->get('create', IndexController::class.'@create')->name('create');
        });
// ..snip..

どうでしょう?

もし、この時点で"あ、良さそう"と思ったら、迷わず https://github.com/sebastiaanluca/laravel-router を導入しても損は無いかと思います。

何が嬉しいの?

まず、 web.php や api.php にべた書きするのに比べて、 Class になったので UnitTest が格段に楽に 書けます。

安心感!大切ですよね。(dusk とかでリクエスト通ればええやん…って話もあるけど、単体で Test Green なの、やっぱりいいよねって。)

web.php, api.php の肥大化が防げます。

長くなるよね。 diff とか面倒な時も出てくるし…

もちろん、単一の Class で全ての Routing を網羅している状態だと同じことが起きますが、せっかく Class で切り出せるようになったなら、その恩恵を受けて Class 分割してみるのも良さそうでしょ?って。

もうちょっと嬉しいポイントありそうな気がするけど…いつか覚えてって気が向いたら書いてみる! :cactus:

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4