Clases y Objetos en PHP
Aprende los fundamentos de la Programación Orientada a Objetos en PHP: definición de clases, instanciación con new, propiedades, métodos y $this.
¿Qué es la Programación Orientada a Objetos?
La Programación Orientada a Objetos (POO) organiza el código en torno a entidades del mundo real (como usuarios, cursos o facturas). Cada entidad combina su estado (propiedades) y su comportamiento (métodos).
Conceptos Clave:
- Clase: El molde o plano que define las propiedades y métodos comunes.
- Objeto (Instancia): Una copia concreta creada en memoria a partir de la clase usando la palabra reservada
new. - Propiedades: Variables que pertenecen a la clase.
- Métodos: Funciones declaradas dentro de la clase que definen lo que el objeto puede hacer.
$this: Pseudovariable que hace referencia al objeto actual dentro de sus propios métodos.
Sintaxis Básica de una Clase:
class Curso {
public string $titulo;
public int $horas;
public function obtenerFicha(): string {
return "{$this->titulo} ({$this->horas} horas de estudio)";
}
}
// Creación de un objeto
$miCurso = new Curso();
$miCurso->titulo = "PHP 8.3 & MySQL";
$miCurso->horas = 40;
echo $miCurso->obtenerFicha();
⚡ Ejemplo de Clase y Creación de Objetos
Modela un Estudiante de Kilopolis con propiedades, métodos de cálculo y presentación de progreso:
<!DOCTYPE html>
<html>
<body>
<h2>POO en PHP 8.3: Clases y Objetos</h2>
<?php
class Estudiante {
// 1. Declaración de propiedades con tipos estrictos
public string $nombre;
public string $especialidad;
public int $clasesCompletadas = 0;
public int $totalClases = 20;
// 2. Método para avanzar progreso
public function completarClase(int $cantidad = 1): void {
$this->clasesCompletadas = min($this->totalClases, $this->clasesCompletadas + $cantidad);
}
// 3. Método para calcular porcentaje
public function porcentajeProgreso(): float {
return round(($this->clasesCompletadas / $this->totalClases) * 100, 1);
}
// 4. Método que genera una tarjeta de presentación HTML
public function renderTarjeta(): string {
$pct = $this->porcentajeProgreso();
$color = $pct >= 80 ? "#10b981" : ($pct >= 40 ? "#2563eb" : "#f59e0b");
return "
<div style='background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; padding:16px; max-width:420px; margin-bottom:12px;'>
<h3 style='margin:0 0 6px 0; color:#0f172a;'>🎓 {$this->nombre}</h3>
<p style='margin:0 0 10px 0; color:#64748b; font-size:0.9rem;'>Especialidad: <strong>{$this->especialidad}</strong></p>
<div style='background:#e2e8f0; border-radius:10px; height:12px; overflow:hidden;'>
<div style='background:{$color}; width:{$pct}%; height:100%; transition: width 0.3s;'></div>
</div>
<p style='margin:6px 0 0 0; font-size:0.85rem; color:#334155;'>
Progreso: <strong>{$this->clasesCompletadas} de {$this->totalClases} clases ({$pct}%)</strong>
</p>
</div>";
}
}
// 5. Instanciación y uso de objetos
$alumno1 = new Estudiante();
$alumno1->nombre = "Juan Felipe Gutiérrez";
$alumno1->especialidad = "Desarrollo Backend PHP";
$alumno1->completarClase(16);
$alumno2 = new Estudiante();
$alumno2->nombre = "Paula López";
$alumno2->especialidad = "Fullstack Developer";
$alumno2->completarClase(7);
// Renderizamos ambas tarjetas
echo $alumno1->renderTarjeta();
echo $alumno2->renderTarjeta();
?>
</body>
</html>
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de PHP 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.