【Laravel】Single Action Controller

PHP

Single Action Controllerとは

その名の通り1つのControllerで1つのActionを行う。
Controllerの担当する役割が1つに固定され、FatControllerを回避し、よりシンプルな形を実現できる。



実装方法

事前にphp artisanコマンドでControllerを作成

php artisan make:controller HogeController
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HogeController extends Controller
{
    //
}

Single Action Controller用に加工する。
Single Action Controllerではメソッドを”__invoke”で作成する

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HogeController extends Controller
{
    // SingleActionControllerでは__invokeで作成する
    public function __invoke () 
    {
        $hello = 'Hello,World!';

        return view('hoge', compact('hello'));
    }
}

ルーティングの設定

<?php

use Illuminate\Support\Facades\Route;

// 通常'App\Http\Controllers\HogeController@MethodName'のように指定するが
// Single Action Controllerの場合はメソッド名が不要となる。
Route::get('/hoge', 'App\Http\Controllers\HogeController');


さいごに

FatになりがちなControllerをよりシンプルにする方法は他にもあります。
ぜひこちらも試してみてください。


コメント

タイトルとURLをコピーしました