Glosario PHP de la A a la Z

Glosario PHP — 124 definiciones

«En mi máquina funciona»
El problema que Docker resuelve (frecuente en PHP: versiones, extensiones, configuración, mayúsculas Windows/Linux): el contenedor incluye su entorno y funciona igual en todas partes.
== vs === / comillas
`==` compara con conversión de tipo (laxa, sorprendente); `===` compara valor Y tipo (estricta, preferible). Las comillas dobles interpretan las variables; las simples = literal.
$_GET vs $_POST
GET: datos en la URL (visibles, para búsquedas/filtros/enlaces). POST: datos en el cuerpo (no visibles, para formularios que modifican, datos sensibles).
API REST
Interfaz que expone datos (en JSON) consumidos por otros programas (front, móvil, servicios); recursos vía URL, métodos HTTP semánticos, códigos de estado.
Arquitectura limpia
Separación de capas, desacoplamiento, depender de abstracciones, código legible; produce un código mantenible, flexible, testeable y evolutivo.
Aserciones
Comprobaciones que realiza un test: assertEquals(esperado, resultado), assertTrue, assertNull…; fallan si la realidad no coincide con lo esperado.
Autenticación por tokens
Para las API (sin estado, front separado/móvil): tras el login, el servidor emite un TOKEN que el cliente devuelve en cada petición (cabecera Authorization) y que el servidor verifica.
Autenticación por sesión
Conexión: verificar identificador + contraseña, guardar la identidad en sesión; páginas protegidas: verificar la sesión; desconexión: destruir la sesión.
Autoloading (PSR-4)
Carga AUTOMÁTICAMENTE el archivo de una clase al usarla (se acabaron las inclusiones manuales), mediante una convención (PSR-4) que asocia namespaces y estructura de carpetas.
Etiquetas PHP
El código PHP va entre ``; fuera de las etiquetas = HTML (enviado tal cual), dentro = código PHP (ejecutado). Permite mezclar PHP y HTML.
Base de datos / MySQL
Sistema que almacena datos de forma duradera (usuarios, productos…). MySQL/MariaDB: base RELACIONAL (tablas, filas, columnas) consultada en SQL (SELECT/INSERT/UPDATE/DELETE = CRUD).
Ventajas de Docker
Reproducibilidad (idéntico en todas partes), aislamiento (versiones de PHP distintas sin conflictos), portabilidad, despliegue fácil, incorporación rápida (docker compose up).
Ventajas de los tests
Confianza (el código hace lo que debe), NO REGRESIÓN (detectar lo que un cambio rompe), documentación (comportamiento esperado), mejor diseño (código testeable = mejor estructurado), detección temprana de errores.
Blade (plantillas)
El motor de plantillas de Laravel: sintaxis limpia ({{ }}, @foreach, @if) con ESCAPE AUTOMÁTICO (protección XSS por defecto) y layouts reutilizables (herencia).
Bucle
Repite un tratamiento en lugar de duplicar código; imprescindible para manipular colecciones o repetir una acción.
break / continue
break: SALE del bucle inmediatamente. continue: PASA a la siguiente iteración. Cuidado con los bucles INFINITOS (condición que nunca se vuelve falsa).
CI/CD (GitHub Actions)
Automatizar código → producción: CI (en cada push, probar/verificar — PHPUnit), CD (desplegar automáticamente si las verificaciones pasan). GitHub Actions/GitLab CI crean estos pipelines.
Closures / funciones nativas
Funciones anónimas (closures) y de flecha: sin nombre, almacenables/pasables (callbacks). PHP tiene cientos de funciones nativas (strlen, array_map…) — consulta la documentación.
Comentarios
Texto ignorado por PHP para explicar el código: `//` o `#` (una línea), `/* ... */` (varias líneas); esenciales para la legibilidad.
Componentes de Symfony
Symfony está hecho de componentes independientes (enrutado, formularios, seguridad, consola…) utilizables por separado; muchos proyectos (incluido Laravel) los usan por debajo.
Composer
Gestor de DEPENDENCIAS de PHP (equivalente a npm): instalar bibliotecas externas y gestionar sus versiones; transformó el ecosistema PHP.
composer.json / vendor
composer.json declara las dependencias; `composer install` las descarga (carpeta vendor/, no versionada, regenerable) y genera el autoloader (vendor/autoload.php). composer.lock fija las versiones.
Concatenación (.)
En PHP, las cadenas se unen con el PUNTO `.` (no con `+`): `'Hola ' . $nombre`.
Configuración y secretos
Parámetros y SECRETOS (identificadores de base, claves) proporcionados por el entorno de producción, NUNCA en el código/repositorio Git (variables de entorno, .env fuera del repositorio).
Controlador (Controller)
Hace de ENLACE: recibe la petición, llama al Modelo para los datos, elige la Vista a mostrar con esos datos; orquesta modelo y vista.
Cookies ($_COOKIE)
Pequeños datos almacenados en el NAVEGADOR, devueltos en cada petición (setcookie / $_COOKIE); del lado del cliente (modificables) — opciones de seguridad HttpOnly, Secure, SameSite.
Lado del servidor vs lado del cliente
Servidor (PHP): ejecuta la lógica (formularios, base, autenticación) y genera las páginas. Cliente (navegador): muestra el HTML/CSS y ejecuta JavaScript.
CRUD
Las cuatro operaciones básicas: Create (INSERT), Read (SELECT), Update (UPDATE), Delete (DELETE); realizadas con PDO y consultas preparadas, con recuperación (fetch/fetchAll).
CSRF → tokens
Obligar a un usuario conectado a ejecutar una acción sin saberlo (petición forjada); protección: tokens CSRF (único por formulario, verificado) y cookie SameSite.
Ciclo petición → PHP → HTML
El usuario pide una página → el servidor ejecuta el código PHP → PHP genera HTML → el navegador lo muestra. Este ciclo se repite en cada petición.
Fechas (DateTime)
El PHP moderno maneja las fechas con la clase DateTime/DateTimeImmutable: crear, FORMATEAR para mostrar (->format), calcular diferencias (->diff), sumar/restar.
Despliegue / hosting
Hacer funcionar la aplicación PHP en un servidor accesible en Internet. Opciones: hosting compartido (simple, económico), PaaS (simplificado), VPS (control + responsabilidades), nube.
Patrones de diseño
Soluciones PROBADAS a problemas de diseño recurrentes (recetas de organización validadas); dan un vocabulario común. Ej.: Factory, Repository, Strategy, Observer, Dependency Injection.
Criterio (vs sobreingeniería)
Aplicar patrones y SOLID con MEDIDA según el problema; la sobreingeniería (estructura excesiva innecesaria) es una trampa, como la infraingeniería (desorden). Encontrar el nivel justo.
Docker / contenedores
Herramienta que empaqueta una aplicación CON todo su entorno (PHP, extensiones, configuración, dependencias) en un contenedor aislado y portable, que funciona igual en todas partes.
Docker Compose (stack PHP)
Archivo docker-compose.yml que define varios contenedores (PHP/Nginx + MySQL + Redis…) y sus relaciones, lanzados juntos (docker compose up); describe todo el stack PHP.
Doctrine (ORM)
El ORM asociado a Symfony: manipular ENTIDADES (objetos) en lugar de SQL, consultas preparadas automáticas, relaciones, migraciones; enfoque «Data Mapper» (vs Active Record de Eloquent).
Carpeta raíz web / localhost
Carpeta donde colocar tus archivos .php (htdocs, www) para que se sirvan; se accede vía http://localhost (tu propia máquina).
echo
Construcción para MOSTRAR (producir salida): `echo 'Hola';` genera texto/HTML en la página. La herramienta fundamental de salida (también `print`).
Eloquent (ORM)
El ORM de Laravel: tablas ↔ clases (modelos), filas ↔ objetos; manipular la base vía objetos/métodos (Producto::all()) en lugar de SQL, con consultas preparadas automáticas y gestión de relaciones.
Encapsulación / visibilidad
Agrupar datos y comportamientos, y controlar el acceso vía la visibilidad: public (todas partes), private (solo la clase), protected (clase + descendientes). Propiedades private + getters/setters para proteger el estado.
Entorno local (AMP)
Lo necesario para ejecutar PHP y una base en tu máquina para desarrollar/probar. AMP = servidor web (Apache), PHP, base (MySQL) — a menudo instalados juntos vía un pack.
Envío de e-mails
La función nativa mail() es básica/poco fiable; usar bibliotecas dedicadas (PHPMailer, Symfony Mailer) para la fiabilidad. No inyectar nunca datos no controlados en las cabeceras.
Esenciales de producción PHP
HTTPS, errores NO mostrados (registrados), OPcache activado, autoloader de Composer optimizado, migraciones ejecutadas al desplegar, entornos separados (dev/staging/prod).
Expresiones regulares (regex)
Minilenguaje que describe patrones en el texto; preg_match (¿coincide?), preg_replace (reemplazar). Potentes pero difíciles.
filter_var para validar
Para las validaciones comunes (email, URL…), preferir filter_var (FILTER_VALIDATE_EMAIL…) a una regex casera — más fiable. Reservar las regex para patrones específicos.
Función
Bloque de código reutilizable que realiza una tarea: `function saludar($nombre) { return ... }`, llamada por su nombre. Evita la duplicación, mejora legibilidad y mantenimiento.
Funciones de arrays/cadenas
Cientos de funciones nativas: arrays (count, in_array, array_map/filter/reduce, sort, implode/explode…), cadenas (strlen, str_replace, substr, trim, str_contains…).
Funciones multibyte (mb_)
Para tratar correctamente Unicode (caracteres acentuados/no latinos): mb_strlen, mb_substr…; las funciones clásicas trabajan con bytes (problema en UTF-8).
for
Bucle con contador, cuando se conoce el número de repeticiones: `for ($i = 0; $i < 10; $i++) { ... }` (inicialización; condición; incremento).
foreach
Bucle para RECORRER un array (el más usado): `foreach ($arr as $valor)` (cada valor) o `foreach ($arr as $clave => $valor)` (pares clave → valor).
Formulario / superglobales
Los formularios envían datos al servidor, que PHP recupera vía superglobales (arrays especiales disponibles en todas partes): $_GET, $_POST, $_FILES, $_SESSION…
Zona horaria y formato de almacenamiento
Puntos de vigilancia: configurar la ZONA horaria (si no, horas falsas); ALMACENAR las fechas en un formato estándar (ISO AAAA-MM-DD) y FORMATEARLAS solo al mostrar.
Gestión de archivos
Leer/escribir archivos del servidor: file_get_contents, file_put_contents, fopen/fread/fwrite, file_exists, unlink (eliminar).
Git para desplegar
Desplegar vía Git (el servidor recupera el código desde el repositorio) en lugar de transferir los archivos a mano (FTP) — más fiable y trazable.
Hash / HTTPS / secretos
Contraseñas HASHEADAS (password_hash/verify, nunca en claro); HTTPS (cifrado); secretos fuera del código (variables de entorno); errores no mostrados en producción; dependencias actualizadas.
Herencia
Una clase hereda de otra (`class Admin extends User`): obtiene sus propiedades/métodos, puede añadir o REDEFINIR; permite reutilización y especialización.
HTTP sin estado (stateless)
Cada petición HTTP es independiente, el servidor no recuerda las anteriores; cookies y sesiones añaden una «memoria» entre páginas.
if / elseif / else
Ejecuta un bloque SI una condición es verdadera; else (si no), elseif (si no, si, varias condiciones en cascada). La condición se evalúa a true/false.
Imagen / Dockerfile / contenedor
Imagen: plantilla fija de la app + entorno, definida por un Dockerfile (receta: imagen PHP base, extensiones, código, dependencias Composer). Contenedor: instancia en ejecución.
include / require
Insertan el contenido de un archivo en otro. require: error FATAL si no se encuentra (archivos indispensables). include: aviso y continúa (opcionales).
Inyección SQL
Fallo CRÍTICO: concatenar datos de usuario en una consulta SQL permite a un atacante inyectar SQL malicioso (leer/modificar/destruir la base). A evitar absolutamente.
Inyección SQL → consultas preparadas
Inyectar SQL vía datos concatenados; protección: SIEMPRE consultas preparadas (PDO), nunca concatenación en el SQL.
Interfaces / traits
Interfaz: «contrato» de métodos que una clase debe implementar (programar por contrato, desacoplar). Trait: reutilizar métodos en varias clases sin herencia (uso compartido horizontal).
Intérprete PHP
El programa que ejecuta el código PHP en el servidor; el visitante nunca ve el código PHP, solo el HTML resultante.
JWT (JSON Web Token)
Token FIRMADO criptográficamente (autocontenido, sin almacenamiento en servidor), muy común para las API; devuelto en cada petición y verificado. Adecuado para fronts separados y móvil.
Laravel
El framework PHP más popular (elegante, productivo, vasto ecosistema); implementa el MVC y proporciona herramientas potentes que aplican las buenas prácticas. La referencia del PHP moderno.
Laravel vs Symfony
Dos excelentes frameworks maduros: Laravel más accesible/productivo; Symfony más riguroso/modular/empresarial. Mismos conceptos (MVC, ORM, plantillas) — transferibles.
Migraciones
Sistema que versiona la estructura de la base (crear/modificar tablas vía código PHP versionado): estructura reproducible, evolución trazable — esencial en equipo y al desplegar.
Puesta en caché (Redis)
Almacenar resultados costosos (consultas frecuentes, cálculos, páginas) para no rehacerlos; Redis (o Memcached) = almacenamiento EN MEMORIA rápido usado como caché. A menudo la palanca más impactante.
Modelo (Model)
Gestiona los DATOS y la LÓGICA DE NEGOCIO: acceso a la base, entidades (Usuario, Producto), reglas de negocio — independientemente de la visualización.
MVC (Modelo-Vista-Controlador)
Patrón de arquitectura que separa la aplicación en tres responsabilidades: Modelo (datos/lógica de negocio), Vista (visualización), Controlador (coordinación). La base de los frameworks web.
Namespaces (espacios de nombres)
Organizan las clases en «espacios» lógicos y evitan CONFLICTOS de nombres (dos `User` coexisten en namespaces distintos). Declaración `namespace App\Models;`, importación con `use`.
No confiar nunca en las entradas
Todo dato de usuario (formulario, URL) es potencialmente erróneo o malicioso; validar y sanear siempre del LADO DEL SERVIDOR antes de usarlo.
No optimizar prematuramente
Código correcto y claro primero, MEDIR cuando surja un problema, luego optimizar de forma SELECTIVA. Optimizar demasiado pronto hace perder tiempo y complica innecesariamente.
Niveles de tests
Unitarios (una función/clase aislada), de integración (varias partes juntas, ej. con la base), funcionales/de extremo a extremo (la aplicación como un usuario).
Fusión null ?? / match
`??` devuelve la izquierda si existe y no es null, si no la derecha (valores por defecto). `match` (PHP 8+) = switch moderno, estricto, que devuelve un valor.
OPcache
Extensión que guarda en CACHÉ el bytecode PHP compilado: la compilación solo se hace una vez (en lugar de en cada petición) — gran ganancia de rendimiento casi gratis. A activar, sobre todo en producción.
Operadores
Aritméticos (+ - * / % **), asignación (=, +=…), comparación (==, ===, !=, <, >…), lógicos (&& || !).
Optimización de la base
A menudo el verdadero cuello de botella: consultas lentas/sin índices, problema N+1 (una consulta por elemento — a corregir con eager loading). Indexar y optimizar las consultas suele tener el mayor impacto.
Organización por inclusiones
Dividir el código en archivos lógicos (config, funciones, header/footer, páginas) ensamblados por inclusiones; primer paso hacia una arquitectura limpia (MVC, autoloading).
Pack todo en uno
Instalación que agrupa servidor web + PHP + base de datos: XAMPP (multiplataforma), Laragon, WampServer (Windows), MAMP (macOS) — lo más simple para empezar.
Packagist / ecosistema
El repositorio de paquetes PHP (vía Composer): un inmenso ecosistema de bibliotecas reutilizables — instalar componentes probados en lugar de codificarlo todo.
Página dinámica
Página generada por el servidor, a menudo personalizada (según usuario, datos); frente a una página HTML estática siempre idéntica.
Parámetros / retorno
Parámetros: datos pasados como entrada (con posibles valores por defecto). Retorno (vía `return`): el resultado devuelto. Las entradas y salidas de la función.
Patrones comunes (PHP)
Singleton (una sola instancia, usar con moderación), Factory (crear objetos), Repository (centralizar el acceso a los datos), Dependency Injection (proporcionar las dependencias desde fuera) — usados por los frameworks.
PDO
PHP Data Objects: interfaz moderna, unificada y segura para conectarse a las bases y ejecutar consultas; funciona con varios tipos de bases (abstracción).
PHP
Lenguaje de programación del lado del servidor diseñado para la Web (PHP: Hypertext Preprocessor); se ejecuta en el servidor y genera HTML enviado al navegador.
phpinfo()
Función que muestra la información de configuración PHP; un archivo info.php con phpinfo() verifica que el entorno funciona y muestra la versión instalada.
phpMyAdmin
Interfaz web (incluida en los packs) para crear y gestionar bases de datos MySQL sin línea de comandos.
Punto y coma
Termina cada instrucción PHP (`;`); olvidarlo provoca un error de sintaxis — el error de principiante más frecuente.
Polimorfismo / abstracción
Polimorfismo: objetos de clases distintas responden al mismo método de forma diferente. Abstracción: ocultar la complejidad tras interfaces simples.
POO / Clase / Objeto
Paradigma que organiza el código alrededor de OBJETOS (datos + comportamientos). Una CLASE es un modelo (propiedades + métodos); un OBJETO es una instancia (`new User()`). $this = el objeto actual; __construct = constructor (inicialización).
Alcance (scope)
Una variable definida en una función es LOCAL (invisible fuera); una variable externa no es accesible dentro de la función. Aislamiento buscado — pasar los datos como PARÁMETROS.
Perfilado / medir antes de optimizar
Identificar los verdaderos cuellos de botella mediante la MEDICIÓN (perfilado) antes de optimizar (regla de oro); evitar optimizar a ciegas o prematuramente.
Consulta preparada
Consulta con MARCADORES (? o :nombre) donde los datos se pasan POR SEPARADO (prepare y luego execute); la base los trata como datos puros — la inyección SQL se vuelve imposible.
require_once / include_once
Garantizan que un archivo solo se incluye UNA vez (evita inclusiones múltiples y redefiniciones) — a menudo preferibles.
Recursos y métodos (API)
GET /api/productos (listar), GET /{id} (leer), POST (crear, 201), PUT/PATCH (modificar), DELETE (eliminar); respuestas JSON con los códigos adecuados (200, 201, 400, 401, 404…).
Enrutado / controladores / Artisan
Enrutado: asociar URL a acciones (Route::get). Controladores: clases que tratan las peticiones. Artisan: línea de comandos (generar código, migraciones…).
Enrutado / flujo MVC
El enrutado dirige la petición al controlador adecuado; flujo: petición → enrutado → controlador → modelo (datos) → vista (visualización). Separa datos, visualización y coordinación.
Seguridad de API
Autenticación por tokens seguros, HTTPS (imprescindible — los tokens circulan), validación de entradas, autorización (permisos), gestión de errores limpia (códigos/JSON), rate limiting.
Seguridad de sesión
Contraseñas HASHEADAS (password_hash/verify), regenerar el ID al conectar (contra la fijación), cookies seguras (HttpOnly/Secure/SameSite), HTTPS y control de acceso (autorización).
Sesiones ($_SESSION)
Estado almacenado DEL LADO DEL SERVIDOR (no modificable por el usuario), el navegador solo guarda un identificador de sesión. session_start() y luego $_SESSION. El mecanismo seguro.
SOLID
Cinco principios de diseño OO: Single Responsibility (una responsabilidad), Open/Closed (extensión sin modificación), Liskov, Interface Segregation, Dependency Inversion (depender de abstracciones).
switch
Compara UNA variable con varios valores (case), más legible que una cascada de elseif; el `break` sale del switch (olvidarlo cae en el case siguiente); default para los demás casos.
Symfony
El otro gran framework PHP (junto a Laravel), conocido como riguroso, modular, apreciado en empresa y en grandes proyectos; arquitectura en COMPONENTES reutilizables.
Sintaxis corta <?= ?>
Equivalente de `<?php echo ... ?>`: `<?= $variable ?>` muestra una variable, práctico en las plantillas HTML. Las variables distinguen mayúsculas (pero las palabras clave no).
Array asociativo
Colección cuyos elementos se acceden por una CLAVE de texto: `$persona = ['nombre' => 'Alicia']; $persona['nombre']`. Omnipresente (datos estructurados).
Array indexado
Colección cuyos elementos se acceden por un ÍNDICE numérico (desde 0): `$frutas = ['manzana', 'plátano']; $frutas[0]`.
Array multidimensional
Arrays DENTRO de arrays (ej. una lista de usuarios, cada uno un array asociativo); representa datos complejos.
TDD (Test-Driven Development)
Escribir los tests ANTES del código (el test define lo que el código debe hacer, luego se escribe para que pase); una disciplina que mejora el diseño.
Ternario
Atajo if/else que devuelve un valor: `condición ? valorSiVerdadero : valorSiFalso`. Práctico para asignaciones condicionales cortas.
Tests automatizados / PHPUnit
Código que PRUEBA tu código (re-ejecutable a voluntad), en lugar de verificar a mano. PHPUnit es el framework de test estándar de PHP (instalado vía Composer).
Twig (plantillas)
El motor de plantillas de Symfony: sintaxis limpia y segura ({{ }}, {% for %}, {% if %}) con escape automático (XSS) y herencia; apreciado más allá de Symfony.
Tipado de parámetros/retorno
Declarar los tipos (`function f(int $a): int`) documenta, captura errores y hace el código robusto — muy recomendado en PHP moderno.
Tipado dinámico
PHP determina el tipo según el valor (sin declaración previa); una variable puede cambiar de tipo. Tipos: string, int, float, bool, array, null, object.
Subidas ($_FILES) — seguridad
Archivos enviados por el usuario ($_FILES), a tratar con precaución: verificar tipo/tamaño, RENOMBRAR, almacenar fuera de la raíz/sin ejecución PHP, limitar las extensiones. Fuente clásica de fallos.
Valores «falsy»
Valores que PHP considera «falsos» en una condición: false, 0, cadena vacía, '0', null, array vacío; el resto es «verdadero».
Validación del lado del servidor obligatoria
La validación del lado del cliente (JavaScript) mejora la experiencia pero es burlable; la validación del lado del servidor (PHP) es obligatoria — es la que protege de verdad.
Validar
Verificar que los datos tienen el formato esperado (email válido, número positivo, campo requerido) y rechazar si no; filter_var() ayuda (email, URL, entero…).
Variable ($)
Almacena un dato; empieza siempre por `$` (`$nombre`), asignada con `=` (`$edad = 30;`). Nombre sensible a mayúsculas, a elegir claro y expresivo.
Vista (View)
Gestiona la VISUALIZACIÓN: el HTML, lo que ve el usuario; recibe datos preparados y los presenta, sin lógica de negocio.
while / do...while
while: repite MIENTRAS una condición es verdadera (número desconocido). do...while: ejecuta al menos una vez (prueba al final).
XSS → htmlspecialchars
Inyectar JavaScript que se ejecuta en otros usuarios (mostrar datos sin escapar); protección: ESCAPAR al mostrar con htmlspecialchars().