1
<?php
declare(strict_types=1);
// ==========================================
// MÓDULO 1: Facturación Física (Tienda Local)
// ==========================================
namespace Kilopolis\TiendaFisica
{
class Factura
{
public function __construct(
private string $codigoTicket,
private float $total
) {}
public function imprimir(): string
{
return "🧾 Ticket Impreso Físico [{$this->codigoTicket}] - Total en caja: $" . number_format($this->total, 2);
}
}
}
// ==========================================
// MÓDULO 2: Facturación Digital (E-Commerce)
// ==========================================
namespace Kilopolis\TiendaDigital
{
class Factura
{
public function __construct(
private string $uuidFiscal,
private float $total
) {}
public function enviarXml(): string
{
return "📱 Factura Electrónica XML firmada [{$this->uuidFiscal}] enviada a la DIAN/Hacienda. Total: $" . number_format($this->total, 2);
}
}
}
// ==========================================
// CÓDIGO PRINCIPAL QUE CONSUME AMBOS MÓDULOS
// ==========================================
namespace
{
// Usamos alias 'as' para que no colisionen
use Kilopolis\TiendaFisica\Factura as FacturaFisica;
use Kilopolis\TiendaDigital\Factura as FacturaDigital;
$facturaSucursal = new FacturaFisica("TICKET-8492", 45.00);
$facturaWeb = new FacturaDigital("FE-9a8b-7c6d-5e4f", 189.99);
echo "<h2>Convivencia Pacífica de Clases con Namespaces:</h2>";
echo "<p style='color:#0284c7; font-family:system-ui;'>" . $facturaSucursal->imprimir() . "</p>";
echo "<p style='color:#10b981; font-family:system-ui;'>" . $facturaWeb->enviarXml() . "</p>";
}
Haz clic para editar este código