Single Action Controller — это контроллер в приложении который включает в себя магический метод __invoke
который и является обработчиком запроса.
Пакет написал разработчик Илья Сакович, смысл пакета заключается в том, чтобы не раздувать контроллеры до больших размеров и сделать маршруты более приятными.
Сейчас этот пакет включен в стандарную поставку laravel и его можно использовать сразу же после установки фреймворка.
Для создания контроллера вам нужно создать класс в котором будет реализован метод __invoke
или использовать команду — php artisan make:controller ShowProfile --invokable
.
Маршрут для такого контроллера прописывается очень просто:
<?php Route::get('user/{id}', 'ShowProfile'); // Или Route::get('user/{id}', ShowProfile::class);
Сам контроллер имеет вид:
<?php namespace App\Http\Controllers; use App\User; use App\Http\Controllers\Controller; class ShowProfile extends Controller { /** * Show the profile for the given user. * * @param int $id * @return View */ public function __invoke($id) { return view('user.profile', ['user' => User::findOrFail($id)]); } }
Вот так просто можно создавать компактные и читабельные контроллеры.
Источник — https://laravel.com/docs/5.7/controllers#single-action-controllers