Laravel: Escribe rutas IDE friendly

Spread the love

Es muy común encontrar esta forma de definir rutas en un proyecto

Route::get('users', 'UserController@index');

Y si bien no tiene nada de malo, a largo plazo se vuelve un problema a la hora de estar navegando en el código de una aplicación.

Afortunadamente desde la versión 5.6 se agrego una mejora que permite definir rutas usando arreglos , de esta forma el ejemplo previo se puede reescribir de la siguiente forma.

Route::get('users', [\App\Http\Controller\UserController::class, 'index']);

Esta nueva sintaxis no agrega nada adicional en cuanto a funcionalidad, pero si usas PhpStorm, Sublime, VSCode o cualquier otro buen editor, puedes ir directamente a la definición de la clase sin necesidad de tener que ir a buscar en las carpetas.

Y por supuesto puedes hacer uso de use para acortar la sentencia dentro del arreglo.

use App\Http\Controller\UserController

Route::get('users', [UserController::class, 'index']);

Vamos a ver como podemos usar esta mejora para hacer mas amigable nuestro trabajo.

Sintaxis para las rutas basadas en métodos http

La mejora soporta todos los métodos http.

Usando el ejemplo previo, podemos escribir las rutas de la siguiente forma:

Route::get('/path',[UserController::class, 'index']);
Route::post('/path',[UserController::class, 'store']);
Route::put('/path',[UserController::class, 'update']);
Route::patch('/path',[UserController::class, 'update']);
Route::delete('/path',[UserController::class, 'destroy']);

Como puedes observar la sintaxis para las rutas que corresponde a un método http tiene el siguiente formato:

[Namespace\AppController::class, 'method']

Controladores de un solo método.

Si las rutas utilizan un controlador de tipo __invoke, entonces solo tienes que declarar la clase usando la constante especial ::class.

veamos un ejemplo:

Route::get('/path',UserController::class);

Sintaxis para rutas de tipo resource y apiResource

La sintaxis usada con los controladores de un solo método funciona para este tipo de rutas.

Route::resource('users',UserController::class);

Route::apiResource('users',UserController::class);

Sintaxis para action y redirect.

También es posible hacer uso de la sintaxis de arreglos cuando usas el helper action y redirect.

action([UserController::class, 'index']);

redirect()->action([UserController::class,'index']);

Resumen

Como hemos visto la sintaxis usando arreglos o la constante ::class, no agrega ningún tipo de funcionalidad a lo que ya hace Laravel, pero nos facilita en gran manera el trabajo diario a la hora de estar dando seguimiento a una ruta y luego al controlador al que pertenece la ruta.

Te dejo en github un ejemplo de esto, usando un fork de una aplicación de demostración que tiene el sitio de Laravel daily.

Si te gusto el articulo o tienes alguna duda deja tu comentario!