Aprende a usar los registradores de ruta en tu aplicación Laravel
Guadalupe
04 Jan 2023
¿Estás llevando cursos de Laravel y aún tienes dudas sobre los registradores de ruta? Laravel Routing es la característica que los desarrolladores aprenden desde el principio. Sin embargo, a medida que los proyectos crecen, cada vez es más difícil gestionar archivos de rutas mayores, desplazándose para encontrar las declaraciones Route::get() correctas.
Existe un enfoque único para cargar rutas en aplicaciones Laravel que te permite crear clases Route Registrars dentro de las cuales registras tus rutas. Los cambios necesarios para tu aplicación Laravel estándar son relativamente simples. ¿Te gustaría saber cómo usar Laravel y los registradores de ruta? ¡Sigue leyendo que hoy te contamos todo!
¿Cómo usar los registros de ruta en la aplicación Laravel?
Como mencionamos, solo se necesitan algunos cambios en el proveedor de servicios de rutas y eliminar los archivos de rutas web y API para crear registradores de rutas en la aplicación Laravel. Lo primero que se debe hacer es crear un nuevo trait/concern que se puede añadir a la app/Providers/RouteServiceProvider llamado MapRouteRegistrars. Entonces, añade el siguiente código a este nuevo trait/concern.
declare(strict_types=1);
namespace App\Routing\Concerns;
use App\Routing\Contracts\RouteRegistrar;
use Illuminate\Contracts\Routing\Registrar;
use RuntimeException;
trait MapRouteRegistrars
{
protected function mapRoutes(Registrar $router, array $registrars): void
{
foreach ($registrars as $registrar) {
if (! class_exists($registrar) || ! is_subclass_of($registrar, RouteRegistrar::class)) {
throw new RuntimeException(sprintf(
'Cannot map routes \'%s\', it is not a valid routes class',
$registrar
));
}
(new $registrar)->map($router);
}
}
}
Te puede interesar: Conoce la actualización de Laravel con Vite
Como ves, también se necesita crear una interfaz para usarlo y asegurarnos de que todos los Registrars lo implementan. Crea esto en app/Routing/Contracts/RouteRegistrar y añade el siguiente código.
declare(strict_types=1);
namespace App\Routing\Contracts;
use Illuminate\Contracts\Routing\Registrar;
interface RouteRegistrar
{
public function map(Registrar $registrar): void;
}
Ahora que tenemos el rasgo y la interfaz en su lugar, podrás visualizar los cambios que se deben realizar en el proveedor de servicios de ruta por defecto. A continuación, verás como se ha añadido una nueva propiedad al proveedor de servicios de rutas. Esta propiedad es donde los registradores de rutas de la aplicación son registrados y cargados dentro del método de arranque.
declare(strict_types=1);
namespace App\Providers;
use App\Routing\Concerns\MapsRouteRegistrars;
use Illuminate\Contracts\Routing\Registrar;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
{
use MapsRouteRegistrars;
protected array $registrars = [];
public function boot(): void
{
$this->routes(function (Registrar $router) {
$this->mapRoutes($router, $this->registrars);
});
}
}
Te puede interesar: Blade Laravel: 5 razones por las que deberías usarlo
Ahora que tenemos la aplicación lista para usar registradores de rutas en lugar de archivos de rutas, es momento de crear uno por defecto para la aplicación. Este enfoque funcionaría de forma excepcional en un diseño basado en dominios o en un sistema modular, permitiendo que cada dominio o módulo registre las rutas.
Para este ejemplo, mantendremos esto simple para que puedas entender el enfoque. Entonces, crea un nuevo registrador de rutas en app/Routing/Registrars/DefaultRegistrar.php y añade el siguiente código:
declare(strict_types=1);
namespace App\Routing\Registrars;
use App\Routing\Contracts\RouteRegistrar;
class DefaultRegistrar implements RouteRegistrar
{
public function map(Registrar $registrar): void
{
$registrar->view('/', 'welcome');
}
}
Ahora que el registrador por defecto está creado, se puede registrar dentro del Proveedor de Servicios de Ruta. De esta forma, nos aseguramos de que está cargado. Ahora, si visitas /, se te cargará con la vista de bienvenida, lo que significa que todo está conectado correctamente. De hecho, podrías utilizar esto en una aplicación donde haya rutas estáticas de marketing, rutas de blog, rutas de administración, y más.
Dividir las rutas de esta manera es una gran forma de pasar de un archivo de rutas PHP estándar a un sistema de enrutamiento basado en clases que permite una mejor encapsulación con su aplicación o dominio. ¿Qué otras formas has encontrado para ayudarte a gestionar una aplicación en crecimiento? En especial desde una perspectiva de enrutamiento, pueden ser un poco ingobernables después de un tiempo.
¡Ahora ya sabes un poco más sobre el framework de Laravel! Al aprender a usar los registradores de ruta en la aplicación, podrás optimizar tus trabajos y tu tiempo. ¡Esperamos que esta información te haya sido de ayuda!
¿Te gustaría aprender a programar? En Coders Free contamos con diversos cursos online con todos los niveles de programación, así como servicios de diseño gráfico para hacer crecer tu negocio. ¡Contáctanos para obtener más información!