LoginSignup
4
1

More than 5 years have passed since last update.

LaravelでControllerではなくHandlerを使う

Posted at

こちらの記事で紹介されていた、コントローラーを使うのを止めて単一責務のHandlerにすると便利だよという内容でした。

Laravelのルーティングでは、 SomeController@someMethod という書き方以外にも、 __invoke メソッドを実装したクラスを直接渡すことができます。

Route::get('/user/{user}', Handlers\ShowUserHandler::class);

この場合、 __invoke メソッドが呼ばれることになります。DIやRoute Model Bindingもこのメソッドで可能です。

<?php

namespace App\Http\Controllers\Handlers;

use App\Models\User;

class ShowUserHandler
{
    public function __invoke(User $user)
    {
        return $user;
    }
}

何が嬉しいのかちゃんと理解できていないので、後日追記したい。

4
1
0

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
1