Listo (Ctrl + Enter para ejecutar) Bootcamp Fullstack »
index.html
Tab = 4 espacios
1
<!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 = "Andrés Vargas";
$alumno1->especialidad = "Desarrollo Backend PHP";
$alumno1->completarClase(16);

$alumno2 = new Estudiante();
$alumno2->nombre = "Alejandro Díaz";
$alumno2->especialidad = "Fullstack Developer";
$alumno2->completarClase(7);

// Renderizamos ambas tarjetas
echo $alumno1->renderTarjeta();
echo $alumno2->renderTarjeta();
?>

</body>
</html>
Haz clic para editar este código
Vista Previa
Servidor PHP 8.3