🐘 PHP: El pilar del desarrollo web dinámico
Guía extensa y detallada — desde los cimientos hasta técnicas modernas, orientada a creadores y desarrolladores.
📑 Índice temático
- 1. Introducción a PHP
- 2. Historia y evolución
- 3. Sintaxis básica
- 4. Variables, tipos & constantes
- 5. Estructuras de control
- 6. Funciones (built-in y user)
- 7. Arrays superpoderosos
- 8. Formularios y superglobales
- 9. Bases de datos (MySQLi/PDO)
- 10. Sesiones y cookies
- 11. Programación Orientada a Objetos
- 12. Manejo de errores
- 13. Seguridad esencial
- 14. Frameworks y ecosistema
- 15. Buenas prácticas
🐘 1. ¿Qué es PHP?
PHP (Hypertext Preprocessor) es un lenguaje de scripting de código abierto, interpretado del lado del servidor, diseñado especialmente para el desarrollo web. Se incrusta directamente en HTML y permite generar contenido dinámico, manejar bases de datos, sesiones, archivos y mucho más. Más del 75% de los sitios web (incluyendo WordPress, Facebook en sus inicios, Wikipedia) utilizaron o utilizan PHP. Su facilidad de aprendizaje, enorme comunidad y versatilidad lo mantienen vigente.
📜 2. Historia y evolución
Creado por Rasmus Lerdorf en 1995 como un conjunto de scripts CGI llamado "Personal Home Page Tools". Con el tiempo evolucionó hasta convertirse en PHP/FI. En 1998 surge PHP 3, y luego PHP 4 con mejoras en el motor Zend. PHP 5 trajo un modelo de objetos robusto. PHP 7 revolucionó el rendimiento y PHP 8 añadió atributos, JIT, tipos mixtos, match expression, etc. Actualmente PHP 8.x es el estándar con mejoras continuas en seguridad y velocidad.
✍️ 3. Sintaxis fundamental
El código PHP se delimita con las etiquetas <?php ... ?>. Si el archivo solo contiene PHP, se omite la etiqueta de cierre. Cada instrucción termina con punto y coma (;). Los comentarios pueden ser de una línea // o multilínea /* */.
<?php
// Esto es un comentario
echo "¡Hola, Blogger!"; // salida al navegador
$nombre = "PHP";
print "Bienvenido a " . $nombre;
?>
El archivo debe tener extensión .php para que el servidor lo interprete.
📦 4. Variables, tipos de datos y constantes
Todas las variables en PHP comienzan con $. PHP es de tipado dinámico, pero desde PHP 7+ se pueden usar declaraciones de tipo. Tipos básicos: string, int, float, bool, array, object, null.
<?php
$entero = 42;
$flotante = 3.1416;
$texto = "Aprendiendo PHP";
$verdadero = true;
$colores = ["rojo", "verde", "azul"];
// Constantes
define("AUTOR", "Guía PHP");
const VERSION = "8.2";
echo AUTOR . " - v" . VERSION;
?>
🔄 5. Estructuras de control
PHP soporta condicionales (if, else, elseif, switch) y bucles (while, do-while, for, foreach).
<?php
$hora = date("H");
if ($hora < 12) {
echo "Buenos días";
} elseif ($hora < 19) {
echo "Buenas tardes";
} else {
echo "Buenas noches";
}
// foreach con arrays
$frameworks = ["Laravel", "Symfony", "CodeIgniter"];
foreach ($frameworks as $fw) {
echo "Framework: $fw <br>";
}
?>
⚙️ 6. Funciones: reutilización y potencia
PHP cuenta con cientos de funciones incorporadas (strings, arrays, matemáticas, fechas) y permite crear funciones personalizadas.
<?php
// Función con tipado
function saludar(string $nombre, int $edad = 0): string {
return "Hola $nombre, tienes $edad años.";
}
echo saludar("Ana", 28);
// Funciones anónimas y closures
$multiplicar = function($a, $b) {
return $a * $b;
};
echo $multiplicar(5, 6);
?>
Además, PHP soporta funciones variádicas (...) y devolución por referencia.
📊 7. Arrays: indexados, asociativos y multidimensionales
Los arrays en PHP son mapas ordenados. Pueden ser usados como listas, pilas, diccionarios, etc. Funciones como array_map, array_filter, sort, merge son imprescindibles.
<?php
$usuario = [
"nombre" => "Carlos",
"email" => "carlos@blog.com",
"roles" => ["editor", "suscriptor"]
];
echo $usuario["nombre"];
// Recorrer asociativo
foreach ($usuario as $clave => $valor) {
echo "$clave: $valor <br>";
}
// Funciones útiles
$numeros = [1,2,3,4];
$cuadrados = array_map(fn($n) => $n ** 2, $numeros);
print_r($cuadrados);
?>
🌐 8. Formularios y variables superglobales
PHP maneja datos entrantes mediante $_GET, $_POST, $_REQUEST. También existen $_SERVER, $_FILES, $_SESSION, $_COOKIE.
<?php
// Procesar envío POST
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$nombre = htmlspecialchars($_POST['nombre'] ?? '');
echo "Gracias, $nombre";
}
?>
<form method="post">
<input name="nombre">
<button>Enviar</button>
</form>
🗄️ 9. Bases de datos: MySQLi y PDO
PHP conecta con bases de datos relacionales mediante MySQLi (orientado a objetos o procedural) y PDO (interfaz uniforme para múltiples motores). PDO es más recomendable por su soporte de prepared statements y portabilidad.
<?php
// Ejemplo PDO
$dsn = "mysql:host=localhost;dbname=blog;charset=utf8mb4";
$pdo = new PDO($dsn, "usuario", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare("SELECT * FROM articulos WHERE autor = ?");
$stmt->execute(["Ana"]);
$articulos = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($articulos as $art) {
echo $art['titulo'];
}
?>
El uso de Prepared Statements es vital para prevenir SQL Injection.
🍪 10. Sesiones y Cookies: persistencia de datos
Las sesiones permiten almacenar información entre páginas para un mismo usuario. Las cookies guardan datos en el navegador del cliente.
<?php
session_start();
$_SESSION['usuario_id'] = 42;
echo "ID de sesión: " . session_id();
// Cookies: setcookie(nombre, valor, expiración)
setcookie("tema", "oscuro", time() + 86400); // 1 día
if (isset($_COOKIE['tema'])) {
echo "Tema preferido: " . $_COOKIE['tema'];
}
?>
🧬 11. Programación Orientada a Objetos
Desde PHP 5 se consolidó el modelo POO: clases, objetos, herencia, interfaces, traits, visibilidad (public, protected, private), métodos mágicos (__construct, __get, __toString).
<?php
class Usuario {
private string $nombre;
public function __construct(string $nombre) {
$this->nombre = $nombre;
}
public function saludar(): string {
return "Hola, soy {$this->nombre}";
}
}
$admin = new Usuario("Laura");
echo $admin->saludar();
// Herencia y polimorfismo
class Admin extends Usuario {
public function nivel(): string {
return "Superusuario";
}
}
?>
Los espacios de nombres (namespace) y autoloading con Composer son estándar en proyectos modernos.
⚠️ 12. Manejo de errores y excepciones
PHP permite manejar errores con bloques try-catch, lanzar excepciones (throw), y definir manejadores personalizados.
<?php
function dividir($a, $b) {
if ($b == 0) {
throw new Exception("División entre cero");
}
return $a / $b;
}
try {
echo dividir(10, 0);
} catch (Exception $e) {
echo "Error capturado: " . $e->getMessage();
} finally {
echo "Ejecución finalizada.";
}
?>
Además, error_reporting(E_ALL) ayuda durante el desarrollo.
🔒 13. Seguridad esencial en aplicaciones PHP
PHP es seguro si se siguen buenas prácticas. Amenazas comunes: inyección SQL, XSS, CSRF, subida de archivos maliciosos, exposición de información sensible.
- Contra SQLi: Uso de prepared statements (PDO/mysqli).
- Contra XSS: htmlspecialchars() al mostrar datos.
- Contra CSRF: Tokens ocultos en formularios.
- Hashing de contraseñas: password_hash() y password_verify().
- Validación de entradas: filtros con filter_var.
<?php
$password = "secret123";
$hash = password_hash($password, PASSWORD_DEFAULT);
if (password_verify("secret123", $hash)) {
echo "Contraseña válida";
}
?>
🚀 14. Frameworks populares y herramientas modernas
Los frameworks aceleran el desarrollo y promueven buenas prácticas. Los más destacados:
| Framework | Descripción |
|---|---|
| Laravel | Elegante, con ORM Eloquent, Blade, sistema de colas y ecosistema robusto. |
| Symfony | Componentes reutilizables, alto rendimiento, ideal para aplicaciones empresariales. |
| CodeIgniter | Ligero, curva de aprendizaje baja. |
| CakePHP | Convenciones over configuration, scaffolding. |
Además, el gestor de dependencias Composer es esencial en PHP moderno para instalar librerías como Guzzle, Carbon, PHPUnit, etc.
// ejemplo composer.json
{
"require": {
"monolog/monolog": "^2.0"
}
}
✅ 15. Buenas prácticas y estándares (PSR)
PSR (PHP Standards Recommendation) unifica criterios. PSR-12 para estilo de código, PSR-4 para autoloading. Algunos consejos:
- No mezclar lógica de presentación con lógica de negocio (aplica MVC).
- Usar nombres de variables descriptivos.
- Escribir código documentado (phpDocumentor).
- Implementar pruebas unitarias (PHPUnit).
- Siempre configurar display_errors = Off en producción.
- Mantener dependencias actualizadas y usar versionado semántico.
0 Comentarios