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をよりシンプルにする方法は他にもあります。
ぜひこちらも試してみてください。

コメント