Pueden ser muchos los casos en los que un controlador no necesite de demasiada lógica y podamos hacer con un sólo método, para ello podemos utilizar controladores invocables en Laravel 5 y utilizarlos desde el sistema de rutas de Laravel sin la necesidad de llamar a ningún método.
La idea es que en lugar de hacer lo siguiente:
HomeController.php
<?php
namespace App\Http\Controllers;
class HomeController extends Controller
{
public function index () {
return 'home controller index';
}
}web.php
<?php
use Illuminate\Support\Facades\Route;
Route::get('home', 'HomeController@index');
Podamos hacer lo siguiente con el mismo resultado:
HomeController.php
<?php
namespace App\Http\Controllers;
class HomeController extends Controller
{
public function __invoke() { //definimos el método mágico __invoke de PHP
return 'home controller __invoke';
}
}web.php
<?php
use Illuminate\Support\Facades\Route;
Route::get('home', 'HomeController'); //llamada sin método, directamente al controlador
Eso es, gracias al método mágico de PHP __invoke podemos utilizar un controlador como si de un método se tratase y ejecutarlo de forma directa sin la necesidad de llamar a ningún método.
Curso Laravel 12
Completo 2026
El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.
star Incluido en cualquier suscripción