Listo (Ctrl + Enter para ejecutar) Bootcamp Fullstack »
ejemplo.php
Tab = 4 espacios
1
<?php
declare(strict_types=1);

// 1. Registro del Autoloader personalizado que emula PSR-4
spl_autoload_register(function (string $nombreClaseCompleto): void {
    echo "<p style='color:#6366f1; font-family:monospace; margin:4px 0;'>🔍 [Autoloader Activado] Buscando clase: <strong>{$nombreClaseCompleto}</strong></p>";

    // Mapeo lógico: Reemplazar el prefijo "Kilopolis\\" por una carpeta virtual
    $prefijo = 'Kilopolis\\';
    if (str_starts_with($nombreClaseCompleto, $prefijo)) {
        $nombreRelativo = substr($nombreClaseCompleto, strlen($prefijo));
        $rutaArchivo = str_replace('\\', '/', $nombreRelativo) . '.php';

        echo "<p style='color:#10b981; font-family:monospace; margin:4px 0 12px 15px;'>✔ Archivo mapeado según estándar PSR-4: <code>src/{$rutaArchivo}</code></p>";
    }
});

// 2. Simulación de clases que normalmente estarían en archivos separados
namespace Kilopolis\Servicios
{
    class GestorEnvios
    {
        public function despachar(string $paquete): string
        {
            return "📦 Paquete [{$paquete}] enviado por transportadora exprés.";
        }
    }
}

namespace Kilopolis\Modelos
{
    class Cliente
    {
        public function __construct(public readonly string $nombre) {}
    }
}

// 3. Código cliente que consume las clases
namespace
{
    echo "<h2>Demostración de Carga Dinámica de Clases:</h2>";

    // Al instanciar las clases, PHP dispara el callback registrado
    $cliente = new \Kilopolis\Modelos\Cliente("Valentina Herrera");
    $gestor = new \Kilopolis\Servicios\GestorEnvios();

    echo "<div style='font-family:system-ui; background:#f8fafc; border:1px solid #cbd5e1; border-radius:8px; padding:15px; margin-top:15px;'>";
    echo "<h4>Cliente: {$cliente->nombre}</h4>";
    echo "<p>{$gestor->despachar('Laptop ThinkPad X1 Carbon')}</p>";
    echo "</div>";
}
Haz clic para editar este código
Vista Previa
Servidor PHP 8.3