¿Qué es la POO? Clase vs. Objeto y Comparativa con Código Procedimental
Aprende qué es la Programación Orientada a Objetos en PHP, las limitaciones del código procedimental espagueti, y cómo modelar clases e instancias con el operador new.
El Salto de la Programación Procedimental a la POO
Cuando empezamos a programar en PHP, solemos escribir código procedimental: una secuencia lineal de funciones y variables sueltas ($nombre = "Carlos";, $saldo = 100;, depositar($saldo, 50);).
En proyectos pequeños esto funciona, pero a medida que el sistema crece, surgen problemas graves:
- Datos desprotegidos: Cualquier parte del código puede modificar
$saldo = -999999;por error. - Código espagueti y duplicación: Funciones dispersas sin cohesión lógica.
- Dificultad de escalabilidad: Manejar múltiples usuarios simultáneos requiere arrays multidimensionales complejos y frágiles.
La Metáfora Fundamental: Clase vs. Objeto
Para comprender la POO solo necesitas distinguir dos conceptos:
| Concepto | Metáfora | Definición en PHP |
|---|---|---|
| Clase (`class`) | El plano arquitectónico o el molde para hacer galletas. | Es la plantilla que define qué variables (propiedades) y qué funciones (métodos) tendrán los objetos. No ocupa espacio real para datos. |
| Objeto (`object`) | La casa construida o la galleta real recién horneada. | Es una instancia concreta en memoria RAM creada a partir de la clase mediante la palabra reservada new. Cada objeto tiene su propio estado independiente. |
Diagrama de Instanciación en Memoria
Figura 1.1: De la definición estática de la clase a múltiples instancias vivas en memoria RAM.
Operadores Clave en la POO de PHP
new: Operador de instanciación que reserva memoria y crea un nuevo objeto (ej:$usuario = new Usuario();).->(Operador Flecha): Permite acceder a las propiedades o ejecutar los métodos del objeto (ej:$usuario->depositar(100);).$this: Pseudovariable disponible dentro de la clase que hace referencia al objeto actual que está ejecutando el método.
⚡ Mi Primera Clase y Creación de Múltiples Instancias en PHP
Código PHP completo ejecutable en el Sandbox. Haz clic en "Pruébalo tú mismo »" para interactuar:
<?php
declare(strict_types=1);
// 1. Definición de la Clase (El Molde)
class Usuario
{
// Propiedades
public string $nombre;
public string $email;
public float $saldo = 0.0;
// Métodos (Comportamiento)
public function depositar(float $monto): void
{
if ($monto <= 0) {
echo "<p style='color:red;'>⚠️ El monto a depositar debe ser mayor a 0.</p>";
return;
}
$this->saldo += $monto;
echo "<p style='color:green;'> $this->nombre depositó $" . number_format($monto, 2) . "</p>";
}
public function mostrarResumen(): void
{
echo "<div style='font-family:system-ui; background:#f8fafc; border:1px solid #cbd5e1; border-radius:8px; padding:15px; margin-bottom:12px;'>";
echo "<h3 style='margin:0 0 8px 0; color:#1e293b;'>👤 Usuario: " . htmlspecialchars($this->nombre) . "</h3>";
echo "<p style='margin:4px 0;'><strong>Email:</strong> " . htmlspecialchars($this->email) . "</p>";
echo "<p style='margin:4px 0;'><strong>Saldo Actual:</strong> $" . number_format($this->saldo, 2) . "</p>";
echo "</div>";
}
}
// 2. Instanciación de Objetos Independientes (new)
$usuario1 = new Usuario();
$usuario1->nombre = "Carlos Mendoza";
$usuario1->email = "[email protected]";
$usuario1->depositar(250.00);
$usuario2 = new Usuario();
$usuario2->nombre = "Valeria Torres";
$usuario2->email = "[email protected]";
$usuario2->depositar(500.00);
$usuario2->depositar(120.50);
// 3. Demostración de estados independientes en memoria
echo "<h2>Resumen de Cuentas:</h2>";
$usuario1->mostrarResumen();
$usuario2->mostrarResumen();
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección¿Cuál es la diferencia fundamental entre una "Clase" y un "Objeto" en la Programación Orientada a Objetos?
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual de Programación Orientada a Objetos en PHP (POO) y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.