luigu/router-gust

Mini router PHP estilo Laravel con soporte para middleware, grupos y rutas nombradas.

v1.1.2 2025-06-20 00:40 UTC

This package is auto-updated.

Last update: 2025-06-20 00:41:23 UTC


README

PHP Version License: MIT Build Status

RouterGust es un sistema de enrutamiento PHP ligero, rápido y expresivo diseñado para construir aplicaciones web y APIs modernas.

Características principales ✨

  • 🛣️ Enrutamiento RESTful (GET, POST, PUT, PATCH, DELETE)
  • 🧩 Parámetros de ruta dinámicos (/user/{id})
  • 🏗️ Grupos de rutas con prefijos y middleware
  • 🛡️ Sistema de middleware flexible
  • 🌐 Soporte para subdominios
  • 🔗 Generación de URLs inteligente
  • 📦 Estructura PSR-4 compatible con Composer
  • 🧪 Cobertura de tests completa

Instalación ⚙️

Instala el paquete vía Composer:

composer require luigu/router-gust

🚀 Primeros pasos

Configuración básica

require 'vendor/autoload.php';

use GustRouter\Router;
use GustRouter\Request;

// Crear instancia del router
$router = new Router(new Request());

// Definir rutas
$router->get('/', function() {
    return '¡Bienvenido a mi aplicación!';
});

// Iniciar el router
$router->run();

📚 Características

1. Definición de rutas

// Métodos HTTP soportados
$router->get('/ruta', $callback);
$router->post('/ruta', $callback);
$router->put('/ruta', $callback);
$router->patch('/ruta', $callback);
$router->delete('/ruta', $callback);
$router->any('/ruta', $callback); // Todos los métodos

// Parámetros en rutas
$router->get('/user/{id}', function($id) {
    return "Usuario ID: $id";
});

// Parámetros opcionales
$router->get('/blog/{slug}/{page?}', function($slug, $page = 1) {
    return "Post: $slug, Página: $page";
});

2. Controladores

class UserController {
    public function show($id) {
        return "Mostrando usuario $id";
    }
    
    public function store() {
        return "Usuario creado";
    }
}

// Usar controladores
$router->get('/users/{id}', [UserController::class, 'show']);
$router->post('/users', [UserController::class, 'store']);

3. Grupos de rutas

$router->group(['prefix' => '/admin', 'middleware' => AuthMiddleware::class], function($router) {
    $router->get('/dashboard', fn() => 'Panel de administración');
    $router->get('/users', [AdminController::class, 'users']);
    $router->get('/settings', [AdminController::class, 'settings']);
});

4. Middleware

class AuthMiddleware {
    public function handle($request, $next) {
        if (!isset($_SESSION['user'])) {
            header('Location: /login');
            exit;
        }
        return $next($request);
    }
}

// Aplicar middleware
$router->get('/profile', fn() => 'Perfil')->middleware(AuthMiddleware::class);

5. Subdominios

$router->domain('api.midominio.com', function($router) {
    $router->get('/users', [ApiController::class, 'users']);
    $router->post('/auth', [ApiController::class, 'auth']);
});

6. Generación de URLs

$router->get('/post/{slug}', fn($slug) => "Post: $slug")->name('post.show');

// Generar URL
$url = $router->url('post.show', ['slug' => 'mi-post']);

🛠️ Configuración avanzada

Personalizar manejo de errores

$router->setErrorHandler(function($code) {
    switch ($code) {
        case 404:
            return 'Página no encontrada';
        case 500:
            return 'Error del servidor';
        default:
            return 'Error desconocido';
    }
});

Configuración de base path

$router->setBasePath('/mi-app');

📜 Licencia

RouterGust es software de código abierto licenciado bajo MIT License.

🌟 Créditos

Desarrollado por Luis Gustavo