__Invoke method gebruiken in je Laravel controller

__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 --invokable
php artisan make:controller TestController --invokable

Voor meer controller opties, Laravel documentatie.

Webbouwplus

Marcel van Doornen - Laravel Freelance developer
Marcel van Doornen, freelance Laravel developer. Ben je benieuwd hoe ik jou kan helpen?
Neem contact met mij op
©2025 Webbouw Plus