Hace unos días Álvaro Carneiro me envió de forma muy amable un correo para avisarme de su nuevo proyecto, se trata de SPR (Simple PHP Router), una pequeña y útil biblioteca desarrollada en PHP para crear y gestionar rutas desde PHP y sin la necesidad de crear redirecciones desde el webserver.
Comúnmente cuando hablamos de routing de aplicaciones lo que hacemos es utilizar las redirecciones que nos proveen los distintos servidores web, tanto Apache como Nginx nos brindan mecanismos sencillos a la hora de reescribir direcciones. No obstante desde la aparición de los frameworks de desarrollo es tendencia que el routeo se realice directamente desde el lenguaje sin la necesidad de recurrir soluciones externas.
Que el propio lenguaje de programación se encargue del routing quiere decir que un archivo va a interpretar las distintas direcciones y las redireccione automáticamente según corresponda. Esto supone de algunas grandes ventajas:
- Todo se hace desde el lenguaje de programación, brindando un entorno que funciona independientemente del servidor web en donde se instale.
- Facilidad de mantenimiento.
- Mayor control sobre las redirecciones.
La única contra que le veo del routing de aplicaciones desde un lenguaje como PHP es que hacerlo puede ser un poco más lento que realizarlo directamente desde el servidor web, esto se debe a que el lenguaje debe ser interpretado primero. Pero honestamente creo que la diferencia en rendimiento es prácticamente imperceptible.
Volviendo al proyecto de Álvaro, utilizar esta biblioteca es muy simple, a continuación inserto un pequeño ejemplo.
Ejemplo de uso:
<?php define('SYSTEM', 1); require_once 'router.php'; Router::_init(); Router::bind('/, /hello', function(){ echo 'Hello world!'; }); ?>
El resultado al acceder a http://sitioweb.com/hello sería ver el mensaje Hello world!.
Web: SPR
ejosvp
13 años ago
me parece que el componente de rutas de Symfony2 es más completo y usa buenas practicas
http://symfony.com/doc/current/components/routing.html
Álvaro Carneiro
13 años ago
Concuerdo en que es más completo pero el motivo de SPR es ser una manera simple de hacerlo.
Soy bastante fan de Symfony pero veo que le dan muchas vueltas al asunto, por ejemplo, yo hace unos días me metí con HttpFoundation de Symfony a ver que tal y me agradó muchísimo, el único problema es que Symfony suele usar muchos archivos .php para hacer las cosas y aveces es algo difícil usarlos por eso intento aprender de ellos y hacer mi propia versión, más simple, liviana y «fácil».
Álvaro
13 años ago
Justo hoy he publicado la versión avanzada de SPR.
La versión trae algunas cuantas mejoras, intenté mantenerla algo liviana.
Me inspiré en HttpFoundation de Symfony tal como le dije a @ejosvp pero intentando mantenerlo simple.
https://github.com/Th3-Night/APR—Advanced-PHP-Router
Diego de Blas
13 años ago
Esto es básicamente Silex:
http://silex.sensiolabs.org/
Álvaro Carneiro
13 años ago
Esto básicamente son dos clases que cumplen la misma función que el sistema de rutas de Silex. Silex es más que algo para manejar rutas, silex te provee de todo lo que ves aquí https://github.com/fabpot/Silex/tree/master/src/Silex/Provider . Así que no veo mucha razón en comparar esto (que yo definiría apenas una librería) a Silex (que es un mini-framework)