← Artículos

PHP puro, sin Laravel: por qué este sitio no lleva framework

Cuando alguien mira este sitio por dentro, la pregunta llega sola: y Laravel, dónde está. No está. Tampoco Symfony ni CodeIgniter, ni un solo paquete de terceros. La web son 18 ficheros de PHP y 3.263 líneas, y lo único que necesita instalado es el propio PHP con el conector de SQLite y la extensión de curl, que vienen en el paquete. No hay carpeta de dependencias que descargar ni fichero de dependencias que actualizar cada pocas semanas.

Escribo esto porque la decisión se lee a menudo como una rareza o como una pose. No es ninguna de las dos cosas: es una cuestión de tamaño.

Los números, primero

Los datos son la única defensa que vale en una decisión así, y están medidos en el móvil que sirve esta página:

Qué hace un framework, y qué cuesta

Un framework es una caja de herramientas ya montada. Te da las direcciones de las páginas, la forma de hablar con la base de datos, las plantillas de las vistas, el sistema de usuarios y contraseñas, los cambios de la base de datos ordenados y numerados, y un ecosistema de piezas hechas para encajar entre ellas. Laravel, el más usado en PHP, hace todo eso bien. No es una crítica: es una descripción.

El precio está en las tripas, y son dos facturas. Una se paga al instalar: Laravel pide, según su propia documentación, PHP 8.2 o superior y trece extensiones del lenguaje, más Composer para traer las piezas. La otra se paga en cada visita. Un framework arranca su maquinaria entera antes de ejecutar una sola línea tuya: registra sus proveedores de servicios, monta el contenedor de dependencias, prepara el paso por las capas intermedias y resuelve la ruta. Hay mediciones de terceros que ponen buena parte del tiempo de una petición justo ahí, en ese arranque, y no en el código de la aplicación. Tanto es así que Laravel tiene una pieza, Octane, cuya misión es precisamente no repetir ese arranque en cada visita.

En un servidor grande, esa factura es calderilla. En un móvil que además sirve otras dos webs, un juego y un bingo, no lo es.

Por qué aquí no

Aquí no hay nada de lo que la caja resuelve. El sitio tiene catorce direcciones, tres bases de datos de SQLite con una tabla cada una y un puñado de consultas cortas. No hay cuentas de usuario con contraseñas —en el tres en raya y en el bingo cada jugador lleva una ficha suelta que se guarda en su navegador, no un usuario con clave—, no se suben ficheros, no hay pagos, no hay trabajos en segundo plano y no hay formularios largos que validar. El HTML se escribe directamente; no hay capa de plantillas.

Con ese tamaño, el enrutador es un switch de 178 líneas y la capa de base de datos son 92. Un framework ahí no ordena nada: añade piezas que no voy a abrir.

Lo que me ahorro

Lo que me cuesta

Sin framework, pero no sin pruebas

La ausencia de framework no es ausencia de comprobaciones. Los tres sitios tienen sus pruebas escritas, que piden las páginas al servidor de verdad con la cabecera del dominio: 35 comprobaciones el tres en raya, 58 el bingo, 44 el posicionamiento y el marcado del sitio y 41 el registro de cambios. Más de doscientas en total, todas ejecutadas desde la consola. Eso sustituye en parte lo que da un framework: no la convención, sino la certeza de que algo sigue funcionando después de tocarlo.

Cuándo sí montaría un framework

La parte incómoda

Que no se lea esto como que los frameworks son malos. No lo son: son una buena compra. Pagas memoria y dependencias y recibes convenciones, un camino ya trillado y respuestas para problemas que todavía no has tenido. Lo que ocurre es que aquí no hay ningún problema de esos.

Y hay una trampa en el argumento de la eficiencia. El visitante de esta página no nota esos quince milisegundos: por el túnel y la red que hay en medio, la misma página tarda entre 260 y 320 milisegundos en llegar desde fuera. Si el motivo fuera la velocidad para quien lee, PHP a secas no lo arregla. El motivo real es otro: menos piezas, menos ficheros, menos cosas que se rompen solas y menos sitio donde equivocarse.

PHP a secas tampoco es más seguro por ser a secas. Casi ningún agujero de una web PHP sale del lenguaje; salen de la web: de una consulta montada con trozos de texto, de un dato que se pinta sin escapar, de un fichero que se sube sin mirar. Eso se hace igual de mal con framework y sin él. Lo que cambia es quién lleva la cuenta.

En resumen

La pregunta no es cuál es más moderno, sino cuánto hueso tiene el proyecto. Para tres webs pequeñas, un blog, un libro de visitas y un par de juegos, PHP a secas llega de sobra, y añadir una caja de herramientas que no voy a abrir sería pagar por peso. El día que este sitio sea otra cosa, lo contaré aquí, con sus números delante. Y lo más probable es que ese día escriba que monté un framework.

Fuentes

Todos los artículos