Listo (Ctrl + Enter para ejecutar) Bootcamp Fullstack »
index.html
Tab = 4 espacios
1
<!DOCTYPE html>
<html>
<body>

<h2>Constructor Property Promotion (PHP 8.3)</h2>

<?php
class CuadernoInteractivo {
    // Definición compacta y moderna: PHP crea las propiedades automáticamente
    public function __construct(
        public string $titulo,
        public string $slug,
        public int $totalSpreads = 25,
        public string $colorAcento = "#2563eb",
        public bool $esPublico = true
    ) {}

    public function renderTarjeta(): string {
        $estado = $this->esPublico 
            ? "<span style='color:#10b981; font-weight:bold;'>✓ Disponible</span>" 
            : "<span style='color:#ef4444; font-weight:bold;'>🔒 Requiere Matrícula</span>";

        return "
        <div style='border:1px solid #cbd5e1; border-left: 6px solid {$this->colorAcento}; border-radius: 6px; padding: 12px 16px; margin-bottom: 12px; background:#ffffff;'>
            <h3 style='margin:0 0 4px 0;'>{$this->titulo}</h3>
            <p style='margin:0 0 6px 0; color:#64748b; font-size:0.85rem;'>Ruta: <code>/cuadernos/{$this->slug}/</code></p>
            <p style='margin:0; font-size:0.9rem;'>
                Capítulos: <strong>{$this->totalSpreads} spreads</strong> &middot; Acceso: {$estado}
            </p>
        </div>";
    }
}

// 1. Instanciación posicional tradicional
$cuaderno1 = new CuadernoInteractivo(
    "Proyecto Fullstack: JS, PHP & MySQL",
    "proyecto-fullstack",
    25,
    "#059669",
    true
);

// 2. Instanciación con Argumentos con Nombre (Named Arguments de PHP 8)
$cuaderno2 = new CuadernoInteractivo(
    titulo: "PHP & MySQL con Seguridad y PDO",
    slug: "php-mysql-seguro",
    colorAcento: "#7c3aed",
    esPublico: false
    // 'totalSpreads' toma su valor por defecto: 25
);

echo $cuaderno1->renderTarjeta();
echo $cuaderno2->renderTarjeta();
?>

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