Frameworks PHP
Cada framework PHP tiene una tarea que hace mejor que nadie.
Creamos, rescatamos y alojamos aplicaciones en todos ellos (y en PHP puro que nunca tuvo framework) con un equipo que lleva veinticinco años escribiendo PHP.
Qué framework encaja con tu proyecto
Responde a dos preguntas. Cada camino termina donde empezaríamos nosotros, y dice cuándo elegiríamos otra cosa.
¿De qué partes?
Un proyecto nuevo
¿Qué es lo más importante?
Un sistema grande en el que varios equipos trabajarán durante años
Por dónde empezaríamos
Symfony
Configuración explícita, un contenedor de inyección de dependencias, versiones con soporte a largo plazo y Doctrine para los datos. La estructura sigue en pie cuando se incorpora el quinto desarrollador.
Considera también Laminas si la empresa ya tiene código en Zend Framework.
Un producto que debe salir pronto, con un equipo pequeño
Por dónde empezaríamos
Laravel
Autenticación, colas, correo, tareas programadas y un ORM expresivo listos para usar, con una sola convención para todo.
Laravel en EGPHPUna API o un servicio pequeño con una sola tarea
Por dónde empezaríamos
Slim
Enrutamiento, middleware y peticiones PSR-7 estándar, y nada que no hayas pedido. Tú eliges la capa de datos y el contenedor.
Si la API va a crecer hasta ser un producto completo, Laravel o Symfony te ahorran reescribirla más adelante.
Una aplicación pequeña en un servidor modesto
Por dónde empezaríamos
CodeIgniter
Poca huella, poca configuración y una documentación clara. Funciona bien donde los recursos son escasos.
Muchas pantallas de datos, creadas rápidamente a partir de la base de datos
Por dónde empezaríamos
Yii · CakePHP
Yii genera modelos y pantallas CRUD con Gii; CakePHP los genera (bake) a partir de sus convenciones. Ambos convierten un esquema en pantallas funcionales rápidamente.
La mínima sobrecarga del framework en cada petición
Por dónde empezaríamos
Phalcon
El framework es una extensión compilada en C, así que en cada petición se ejecuta muy poco PHP. Necesita esa extensión instalada en el servidor; nosotros la instalamos en los nuestros.
Muchos hostings compartidos no permiten extensiones PHP. Compruébalo antes de elegirlo.
Una aplicación que ya existe
¿Sobre qué está construida?
PHP puro sin framework, o una versión de PHP muy antigua
Por dónde empezaríamos
Primero, el rescate
Primero la dejamos segura y al día, y después decidimos juntos si merece la pena un framework.
Cómo es un rescateHecha con un framework, y funciona
Por dónde empezaríamos
Mantener el framework
La actualizamos, la aseguramos y la ampliamos en el framework en el que se escribió. Reescribirla es el último recurso, no el primero.
Hecha con un framework que quieres dejar
Por dónde empezaríamos
Migrar por etapas
La aplicación antigua y la nueva funcionan en paralelo, y las rutas pasan de una a otra de una en una mientras el negocio sigue funcionando.
Cómo es una migraciónLado a lado
Qué es cada framework, en qué destaca y cuándo nos lo pensaríamos dos veces. Ninguno es un error; cada uno es el adecuado para un trabajo distinto.
| Framework | Qué es | Capa de datos | Destaca en | Piénsalo dos veces si |
|---|---|---|---|---|
| Symfony | Framework full-stack y componentes reutilizables | Doctrine ORM | Sistemas grandes y de larga vida, con versiones de soporte a largo plazo | Un sitio pequeño tiene que salir esta semana |
| Laravel | Framework full-stack | Eloquent | Lanzar un producto rápido, con colas, autenticación y correo integrados | Quieres que cada pieza se conecte de forma explícita |
| CodeIgniter | Framework full-stack ligero | Query builder y modelos sencillos | Poca huella en servidores modestos | El proyecto necesita un gran ecosistema de paquetes |
| Yii | Framework full-stack | Active Record | Pantallas con muchos datos generadas con Gii, y caché | Tu equipo no lo conoce; su comunidad es más pequeña |
| CakePHP | Framework full-stack | CakePHP ORM | Convención sobre configuración, y código generado a partir del esquema | La aplicación choca con sus convenciones a cada paso |
| Laminas | Componentes y frameworks MVC y de middleware; el sucesor de Zend Framework | laminas-db o Doctrine | Sistemas de negocio ya construidos sobre Zend Framework | Un proyecto nuevo y pequeño quiere avanzar rápido |
| Slim | Microframework | Ninguna integrada: tú eliges | APIs y servicios pequeños | La aplicación necesita sesiones, formularios y un panel de administración desde el primer día |
| Phalcon | Framework full-stack distribuido como extensión en C | Phalcon ORM con PHQL | Sobrecarga muy baja por petición | Tu hosting no puede instalar extensiones PHP |
El propio Laravel está construido sobre varios componentes de Symfony, y la mayoría de estos frameworks comparten los mismos estándares PSR: mover código entre ellos cuesta menos de lo que parece.
PHP antiguo, puesto de nuevo en forma
Código escrito hace años sigue generando ingresos a muchas empresas. Lo dejamos seguro y al día sin apagarlo.
- $id = $_GET['id'];- $r = mysql_query("SELECT * FROM orders WHERE id = $id");- $order = mysql_fetch_assoc($r);+ $stmt = $pdo->prepare('SELECT * FROM orders WHERE id = ?');+ $stmt->execute([(int) $_GET['id']]);+ $order = $stmt->fetch(PDO::FETCH_ASSOC);
Leerla y ponerla en marcha
Una copia de la aplicación funcionando en un servidor actual, y una lista por escrito de lo que falla.
Pruebas alrededor de lo que funciona
Pruebas que registran lo que hacen hoy las páginas, para que un cambio que rompa una se detecte al instante.
PHP actualizado por etapas
Versión a versión, con Rector para los cambios mecánicos y PHPStan para encontrar lo que se le escapó.
La seguridad, primero
Consultas preparadas, salida escapada, contraseñas con un nuevo hash, y sesiones y subidas de archivos bien protegidas.
Después, si compensa, un framework
Las funciones nuevas se crean en un framework junto al código antiguo, y las páginas antiguas pasan a él a medida que se modifican.
Pasar de un framework a otro, ruta a ruta
No detenemos el negocio para reescribir. La aplicación antigua y la nueva están detrás de un mismo servidor web, y cada ruta pasa a la nueva cuando su sustituta está lista.
-
/api/ordersAplicación nueva Migrada -
/accountAplicación nueva Migrada -
/checkoutAplicación nueva En pruebas -
/reportsAplicación antigua En espera -
/adminAplicación antigua En espera
El cambio es una línea por ruta
# nginx
location /api/orders { proxy_pass http://new; }
location /account { proxy_pass http://new; }
location /checkout { proxy_pass http://new; }
location / { proxy_pass http://old; }
Una ruta que falla vuelve a la aplicación antigua con el mismo cambio de una línea, mientras la corregimos.

Cuéntanos qué tienes en marcha
Para empezar basta con el framework, la versión de PHP y lo que te preocupa. Cada proyecto se presupuesta tras una breve conversación.