__Invoke method gebruiken in je Laravel controller
published 04-03-2021
Artikel hoe de PHP functie __invoke te gebruiken in Laravel. De method '__invoke' kan gebruiken in je Laravel controller als je daar maar 1 method in gebruikt. Eerst even een voorbeeld zonder __invoke.
Controller:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
class TestController extends Controller
{
public function index() {
return view('test.index');
}
}
Route:
Route::get('test', [\App\Http\Controllers\TestController::class, 'index']);
Dezelfde uitkomst maar nu met de __invoke method
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
class TestController extends Controller
{
public function __invoke() {
return view('test.index');
}
}
Route:
Route::get('test', \App\Http\Controllers\TestController::class);
Zoals je ziet zijn de controllers en routes bijna hetzelfde. Alleen hoef je nu in de route de method niet mee te geven omdat er maar 1 method (__invoke) bestaat.
Artisan met __invoke
Je kan bij het aanmaken van een Laravel controller al aangeven dat je __invoke wilt gebruiken door de parameter --invokablephp artisan make:controller TestController --invokable
Voor meer controller opties, Laravel documentatie.