# PHP moderno desde cero para crear aplicaciones web

**Categoría:** Programación · **Nivel:** Inicial · **Lectura:** 15 min
**Publicada:** 2026-07-28 · **Actualizada:** 2026-07-28 · **Autoría:** Underc0de
**Versión HTML (canónica):** https://underc0de.org/guias/programacion/php-moderno-desde-cero/

## Respuesta rápida

**PHP** es un lenguaje de programación pensado para la **web del lado del servidor**, y el **PHP moderno** (versiones 8.x) tiene poco que ver con la mala fama que arrastra de sus primeros años. Hoy incluye **tipos** en parámetros, propiedades y retornos (para detectar errores antes), **enumeraciones**, **atributos**, un buen rendimiento gracias al motor JIT y una sintaxis mucho más limpia. Tres piezas definen el ecosistema actual: **Composer**, el gestor de dependencias que instala bibliotecas y genera el *autoload* (cargar clases automáticamente) sin tener que hacer include a mano; los **estándares PSR** (PHP Standards Recommendations), acuerdos de la comunidad sobre estilo, autoload e interfaces comunes que hacen que las piezas de distintos autores encajen; y los **frameworks** maduros, sobre todo **Laravel** (muy productivo, con «baterías incluidas») y **Symfony** (modular y usado también como base de otros proyectos). Un proyecto PHP de hoy no es un montón de archivos .php sueltos mezclados con HTML: es un proyecto con composer.json, dependencias versionadas, clases organizadas por espacios de nombres, y separación entre lógica y presentación. PHP sigue moviendo una parte enorme de la web —incluido WordPress— y, bien escrito, es una forma **rápida, madura y muy demandada** de construir aplicaciones web. Su fama vieja venía del código antiguo, no del lenguaje actual.

## Qué es PHP hoy

**PHP** es un lenguaje diseñado para generar páginas y respuestas **en el servidor**: recibe una petición, ejecuta código y devuelve HTML o datos. Nació en los años noventa y su facilidad de uso lo hizo dominante en la web, pero también acumuló código descuidado que le dio mala fama. La clave para entenderlo hoy es separar el **lenguaje moderno** (PHP 8) del **código antiguo** que muchos recuerdan.

> **Sigue moviendo la web**
>
> Lejos de estar en desuso, PHP ejecuta una **parte enorme** de los sitios del mundo, empezando por **WordPress**, que por sí solo mueve una fracción gigantesca de la web. A eso se suman tiendas, plataformas y aplicaciones a medida. Esa base instalada garantiza **demanda de trabajo**, ecosistema maduro y una comunidad enorme. La pregunta útil no es «¿PHP está muerto?» (no lo está), sino «¿cómo se escribe PHP *bien* hoy?».

## Qué lo hace moderno

Cuatro cosas separan el PHP moderno del que recordás:

| Pieza | Qué aporta |
|---|---|
| Tipos (PHP 8) | Declarar tipos de parámetros, retornos y propiedades; menos errores, código más claro |
| Composer | Instalar bibliotecas versionadas y cargar clases con *autoload*, sin include a mano |
| Estándares PSR | Acuerdos de estilo, autoload e interfaces para que las piezas de distintos autores encajen |
| Frameworks | Laravel y Symfony: estructura, seguridad y componentes probados |

```text
// PHP moderno: tipos declarados y clase organizada
<?php
declare(strict_types=1);

class CarritoService {
    public function total(array $precios): float {   // tipos de entrada y retorno
        return array_sum($precios);
    }
}

$carrito = new CarritoService();
echo $carrito->total([19.90, 5.00, 12.50]);   // 37.4
```

## Un proyecto PHP hoy

El salto mental más grande es dejar de pensar en «archivos .php sueltos» y empezar a pensar en un **proyecto**: dependencias declaradas, clases organizadas por **espacios de nombres** y una separación clara entre lógica y presentación.

1. **Iniciar el proyecto con Composer.** Un composer.json declara las dependencias y la configuración de autoload.
2. **Instalar dependencias.** composer install las descarga a vendor/ y genera el autoloader.
3. **Organizar el código en clases y espacios de nombres.** Nada de lógica mezclada dentro del HTML; cada clase, su archivo.
4. **Elegir un framework si el proyecto lo pide.** Laravel o Symfony aportan rutas, base de datos, seguridad y plantillas ya resueltas.
5. **Versionar con Git y separar configuración.** Secretos fuera del código; entorno reproducible.

> **Atención**
>
> Buena parte de la mala fama de PHP vino de aplicaciones inseguras, no del lenguaje. El PHP moderno y sus frameworks traen defensas de serie —consultas preparadas contra inyección SQL, escape automático en plantillas contra XSS, protección CSRF—, pero **solo si se usan**. Nunca construir consultas concatenando entrada del usuario, nunca confiar en datos que llegan del navegador y validar todo en el servidor siguen siendo reglas de oro. Si tu proyecto expone una API, conviene revisar la [seguridad de APIs REST](../../hacking/seguridad-de-apis-rest-autenticacion-permisos-y-validaciones/index.md).

## Errores frecuentes

- **Aprender con tutoriales viejos.** Enseñan patrones inseguros y obsoletos; buscar material de PHP 8 y frameworks actuales.
- **Mezclar lógica y HTML en el mismo archivo.** Vuelve el código inmantenible; separar responsabilidades.
- **Ignorar Composer.** Reinventar la carga de clases y las dependencias a mano es trabajo perdido y frágil.
- **No usar tipos ni strict_types.** Se pierde la principal red de seguridad del PHP moderno.
- **Construir consultas concatenando entrada del usuario.** Abre la puerta a la inyección SQL; usar consultas preparadas.
- **Creer que PHP está muerto.** Mueve gran parte de la web y tiene demanda de trabajo constante.
- **Saltar directo a un framework sin bases del lenguaje.** Entender PHP y la POO antes hace que el framework tenga sentido.

## Preguntas frecuentes

**¿PHP sigue siendo relevante en la actualidad?**
Sí, PHP sigue siendo muy relevante en la actualidad, y la idea de que está muerto o en desuso es un mito que no se corresponde con la realidad del desarrollo web. PHP ejecuta una parte enorme de los sitios web del mundo, empezando por el sistema de gestión de contenidos más usado, que por sí solo mueve una fracción gigantesca de toda la web, y siguiendo por innumerables tiendas en línea, plataformas y aplicaciones a medida construidas con este lenguaje. Esa inmensa base instalada garantiza que exista una demanda constante de personas que sepan trabajar con PHP, tanto para mantener y evolucionar sistemas existentes como para crear nuevos proyectos, además de un ecosistema muy maduro de herramientas, bibliotecas y una comunidad amplísima. Por otro lado, el lenguaje no se ha quedado estancado, sino todo lo contrario: las versiones modernas, correspondientes a la serie ocho, han incorporado mejoras muy significativas, como un sistema de tipos que permite declarar los tipos de parámetros, retornos y propiedades, características modernas como las enumeraciones y los atributos, y un rendimiento notablemente mejorado gracias a mejoras en el motor de ejecución. A esto se suma un ecosistema profesional formado por el gestor de dependencias Composer, los estándares de la comunidad conocidos como PSR y frameworks maduros como Laravel y Symfony, que hacen que desarrollar en PHP hoy sea una experiencia ordenada y potente. Conviene distinguir, eso sí, entre la mala fama que PHP arrastra de sus primeros años, asociada a código descuidado, archivos que mezclaban lógica y presentación y prácticas inseguras, y el PHP moderno, que poco tiene que ver con aquello. La conclusión es que PHP no solo sigue siendo relevante, sino que es una opción perfectamente válida, rápida y muy demandada para construir aplicaciones web, siempre que se aprenda y se use en su versión moderna y con buenas prácticas.

**¿Qué es Composer y para qué sirve?**
Composer es el gestor de dependencias estándar de PHP, es decir, la herramienta que se encarga de administrar las bibliotecas externas de las que depende un proyecto, y es una de las piezas que definen al PHP moderno. Su función principal es permitir declarar, en un archivo de configuración del proyecto habitualmente llamado composer punto json, qué paquetes o bibliotecas necesita la aplicación y con qué versiones, para luego instalarlos automáticamente con todas sus propias dependencias, resolviendo las relaciones entre ellas. De este modo, en lugar de descargar manualmente bibliotecas, copiarlas al proyecto y preocuparse de sus versiones y de las dependencias que a su vez requieren, basta con declararlas y dejar que Composer las obtenga desde un gran repositorio central de paquetes de la comunidad. Además de instalar dependencias, Composer cumple otra función muy importante, que es generar el mecanismo de carga automática de clases, conocido como autoload: gracias a él, ya no es necesario incluir manualmente cada archivo con instrucciones de inclusión, sino que las clases se cargan solas cuando se usan, siguiendo un estándar de la comunidad que relaciona los nombres de las clases y sus espacios de nombres con la ubicación de los archivos. Esto simplifica enormemente la organización del código y es lo que permite trabajar con proyectos estructurados en clases y espacios de nombres de forma cómoda. Composer también facilita mantener las dependencias actualizadas de forma controlada, distinguiendo entre las versiones que se instalaron y las que se permiten, y asegurando que todo el equipo de desarrollo y los servidores usen exactamente las mismas versiones mediante un archivo de bloqueo. En conjunto, Composer transformó la manera de desarrollar en PHP, dando acceso a un ecosistema inmenso de componentes reutilizables y aportando el orden que caracteriza a los proyectos modernos, por lo que aprender a usarlo es uno de los primeros pasos imprescindibles para desarrollar en PHP hoy.

**¿Qué son los estándares PSR?**
Los estándares PSR, cuyas siglas corresponden a recomendaciones estándar de PHP, son un conjunto de acuerdos y especificaciones elaborados por un grupo de trabajo de la comunidad de PHP con el objetivo de mejorar la interoperabilidad entre los distintos componentes, bibliotecas y frameworks del ecosistema. La idea de fondo es que, si los diferentes autores de código siguen unas convenciones comunes, sus piezas encajan entre sí con mucha menos fricción, y el conjunto del ecosistema gana en coherencia y reutilización. Estos estándares cubren varios aspectos. Algunos definen convenciones de estilo de código, es decir, cómo escribir y dar formato al código para que resulte uniforme y legible independientemente de quién lo haya escrito, lo que facilita colaborar y leer código ajeno. Otros especifican cómo debe funcionar la carga automática de clases, estableciendo la relación entre los nombres de las clases y sus espacios de nombres y la estructura de archivos, lo que permite que herramientas como Composer carguen las clases de forma predecible. Y otros definen interfaces comunes para conceptos habituales, como el manejo de peticiones y respuestas web, el registro de mensajes o el almacenamiento en caché, de modo que distintos componentes que implementan esas interfaces puedan intercambiarse entre sí sin cambiar el resto del código. El valor práctico de los PSR es enorme, porque son precisamente estas convenciones compartidas las que permiten que el ecosistema moderno de PHP funcione de manera modular, combinando componentes de orígenes diversos que colaboran gracias a que hablan el mismo idioma. Para quien aprende PHP moderno, no es necesario memorizar todos los estándares, pero sí conviene conocer su existencia y su propósito, seguir las convenciones de estilo y de autoload en los propios proyectos, y entender que muchos de los beneficios de trabajar con frameworks y bibliotecas actuales se apoyan en estos acuerdos comunes que dan orden y compatibilidad al conjunto.

**¿Qué diferencia hay entre Laravel y Symfony?**
Laravel y Symfony son los dos frameworks de PHP más importantes y usados para construir aplicaciones web, y aunque ambos permiten desarrollar proyectos completos y de calidad, tienen filosofías y enfoques que los diferencian y que conviene conocer para elegir según el caso. Laravel se caracteriza por priorizar la productividad y la experiencia del desarrollador, ofreciendo una gran cantidad de funcionalidades integradas de serie y con convenciones que permiten avanzar muy rápido; su sintaxis expresiva y su amplio conjunto de herramientas incluidas, que cubren desde el acceso a la base de datos hasta las colas de tareas, la autenticación o el envío de correos, hacen que sea especialmente apreciado para desarrollar aplicaciones con rapidez y con una curva de entrada amable, lo que lo ha convertido en muy popular, sobre todo para proyectos que quieren arrancar deprisa y para desarrolladores que valoran tener muchas cosas resueltas por defecto. Symfony, por su parte, se caracteriza por su diseño modular y su flexibilidad: está construido como un conjunto de componentes reutilizables e independientes que se pueden usar por separado o combinados, y pone mucho énfasis en la robustez, la configurabilidad y las buenas prácticas de ingeniería, lo que lo hace especialmente adecuado para proyectos grandes, complejos o de larga duración donde se valora el control fino y la mantenibilidad. Un dato relevante es que Symfony es tan sólido que muchos otros proyectos del ecosistema, incluido en parte el propio Laravel, se apoyan en sus componentes, lo que da idea de su papel fundamental. En cuanto a la elección, no hay una respuesta universal: Laravel suele ser una gran opción para empezar rápido, para aplicaciones de tamaño pequeño y mediano y para quienes valoran la comodidad y la productividad inmediata, mientras que Symfony brilla en proyectos que requieren máxima flexibilidad, arquitectura a medida y control detallado. Ambos comparten muchas ideas modernas, siguen buenas prácticas y estándares de la comunidad, y aprender bien cualquiera de los dos proporciona una base excelente, además de que los conceptos son en buena medida transferibles entre ellos.

**¿Es difícil aprender PHP para empezar en el desarrollo web?**
PHP tiene fama de ser uno de los lenguajes más accesibles para empezar en el desarrollo web del lado del servidor, y en general aprenderlo no es difícil, aunque conviene matizar esta idea para hacerlo bien desde el principio. Por un lado, PHP fue diseñado precisamente para la web y para ser fácil de usar, de modo que con nociones básicas de programación y de cómo funciona la web se puede empezar a producir páginas dinámicas relativamente pronto, viendo resultados concretos con rapidez, lo que resulta muy motivador para quien aprende. Su sintaxis es sencilla, la documentación oficial es extensa y está disponible en español, y hay una comunidad enorme con abundante material y respuestas a casi cualquier duda. Por otro lado, esa misma facilidad histórica hizo que circule mucho material antiguo que enseña PHP con prácticas obsoletas e inseguras, como mezclar la lógica con el HTML en un mismo archivo, no usar tipos o construir consultas a la base de datos concatenando directamente datos del usuario, lo que constituye un riesgo de seguridad. Por eso, la principal dificultad al aprender PHP hoy no es tanto el lenguaje en sí como asegurarse de aprenderlo en su versión moderna y con buenas prácticas, evitando tutoriales anticuados. La recomendación para empezar bien es apoyarse en material actualizado que use la serie ocho del lenguaje, aprender desde el principio a declarar tipos, a organizar el código en clases y espacios de nombres, a usar el gestor de dependencias Composer y a seguir las convenciones de la comunidad, así como interiorizar las prácticas de seguridad básicas, como validar siempre los datos de entrada y usar consultas preparadas. También es aconsejable tener una base sólida de programación y de programación orientada a objetos antes o mientras se aprende PHP, y no saltar directamente a un framework sin entender el lenguaje que hay debajo, porque comprender los fundamentos hace que después el framework tenga sentido. Con ese enfoque, PHP es un lenguaje amable para iniciarse, que ofrece resultados rápidos y que abre muchas puertas laborales gracias a su enorme presencia en la web.

**¿Necesito un framework para programar en PHP?**
No es estrictamente necesario usar un framework para programar en PHP, pero en la mayoría de los proyectos reales de cierto tamaño resulta muy recomendable, y entender cuándo conviene y cuándo no forma parte de aprender a desarrollar con criterio. Un framework es un conjunto estructurado de código y componentes que proporciona una base y unas convenciones para construir aplicaciones, resolviendo de antemano muchas tareas comunes como el enrutamiento de las peticiones, el acceso a la base de datos, la autenticación de usuarios, la gestión de plantillas, la validación de datos o la protección frente a vulnerabilidades habituales. Usar un framework maduro como Laravel o Symfony aporta ventajas importantes: se evita reinventar soluciones a problemas ya resueltos, se parte de una arquitectura ordenada y probada, se incorporan defensas de seguridad de serie y se gana en productividad y en mantenibilidad, además de facilitar el trabajo en equipo gracias a las convenciones compartidas. Por eso, para aplicaciones web de tamaño medio o grande, o para proyectos profesionales, lo habitual y aconsejable es apoyarse en un framework. Sin embargo, hay situaciones en las que no hace falta o incluso no conviene: para aprender los fundamentos del lenguaje es muy útil escribir PHP sin framework al principio, porque así se entiende de verdad qué hace el lenguaje por debajo antes de que un framework lo automatice; para scripts pequeños o tareas muy concretas, introducir todo un framework puede ser un exceso innecesario; y para necesidades intermedias existen también componentes y microframeworks más ligeros que aportan solo algunas piezas sin la estructura completa de un framework grande. La recomendación equilibrada es aprender primero PHP moderno y la programación orientada a objetos con proyectos sencillos sin framework, para tener una base sólida, y adoptar después un framework cuando el proyecto lo justifique, eligiéndolo según sus características. De este modo se aprovechan las ventajas de los frameworks sin caer en el error de usarlos como una caja negra sin comprender lo que hacen ni el lenguaje sobre el que se apoyan.

## Fuentes

Documentación oficial y material de la comunidad consultados para esta guía. Fecha de consulta: 28 de julio de 2026.

### Aportes de la comunidad Underc0de

1. **Underc0de, foro.** [Sección Desarrollo web](https://underc0de.org/foro/desarrollo-web/). PHP y aplicaciones web.
2. **Underc0de, foro.** [Sección Programación](https://underc0de.org/foro/programacion/). Buenas prácticas de backend.

### Documentación oficial

1. **The PHP Group.** [Manual de PHP](https://www.php.net/manual/es/). Documentación oficial del lenguaje.
2. **PHP-FIG.** [PHP Standards Recommendations (PSR)](https://www.php-fig.org/psr/). Estándares de interoperabilidad.
3. **Composer.** [Documentación de Composer](https://getcomposer.org/doc/). Gestor de dependencias de PHP.
4. **Laravel.** [Documentación de Laravel](https://laravel.com/docs). Framework web de PHP.

## Guías relacionadas

- [Aprender a programar](../aprender-programacion-desde-cero/index.md)
- [Crear una API REST](../como-crear-y-consumir-una-api-rest/index.md)
- [Git y GitHub](../git-y-github-desde-cero/index.md)
- [Clean Code](../clean-code-codigo-limpio-y-mantenible/index.md)
- [Índice de Programación](../index.md)
