ghianco/kuantia

There is no license information available for the latest version (1.0.0) of this package.

1.0.0 2025-09-08 23:23 UTC

This package is auto-updated.

Last update: 2025-09-09 15:43:32 UTC


README

# 📦 Kuantia — Conversor de Unidades Flexible para PHP

**Kuantia** es un micro-SDK PHP que permite la **conversión entre unidades físicas** (masa, volumen, longitud, área, conteo) e incluso **equivalencias personalizadas** como cajas, packs o formatos comerciales.

Ideal para soluciones de inventario, logística, e-commerce o sistemas con múltiples presentaciones de productos.

---

## 🧰 Instalación

```bash
composer install ghianco/kuantia
```

🚀 Uso Básico
use Kuantia\Kuantia;
use Kuantia\Magnitude\Mass;

echo Kuantia::convert(1000, Mass::G, Mass::KG); // 1

📗 Unidades Soportadas
🔹 Mass (masa)

t, kg, g, mg, lb, oz

🔹 Volume (volumen)

ml, cl, dl, l, hl, oz, gal

🔹 Length (longitud)

mm, cm, dm, m, km, in, ft, yd, mi

🔹 Area (área)

mm2, cm2, m2, km2, in2, ft2, yd2

🔹 Count (conteo)

und, par, doc, cien

⚙️ Ejemplos de Uso
🎯 Conversión directa
use Kuantia\Magnitude\Volume;

Kuantia::convert(1000, Volume::ML, Volume::L); // 1
Kuantia::convert(1, Volume::L, Volume::ML); // 1000

🧠 Equivalencias personalizadas (con UnitReference)
use Kuantia\Magnitude\Count;
use Kuantia\Magnitude\Volume;
use Kuantia\UnitReference;

$r = Kuantia::convert(1, Count::UND, UnitReference::create(750, Volume::ML));
echo "$r ml"; // 750

📦 Equivalencia como array
use Kuantia\Magnitude\Count;
use Kuantia\Magnitude\Mass;

echo Kuantia::convert(1, Count::UND, [1000, Mass::G]); // 1000 g
echo Kuantia::convert(2, Count::UND, [850, Mass::KG]); // 1700 kg

🧪 Validaciones
✅ Correcto
UnitReference::create(750, 'ml');

❌ Valor negativo
UnitReference::create(-1, 'kg');
// Exception: Value must be positive

❌ Unidad inválida
UnitReference::create(1, 'banana');
// Exception: Unidad no reconocida: banana

🔄 Conversión en lote (batch)
use Kuantia\Kuantia;
use Kuantia\Magnitude\Mass;
use Kuantia\Magnitude\Volume;
use Kuantia\Magnitude\Count;

$cases = [
    [5, Mass::OZ, Mass::KG],
    [1000, Mass::G, Mass::KG],
    [2, Mass::KG, Mass::G],
    [1, Mass::KG, Mass::OZ],
    [2, Mass::G, Mass::LB],
    [1, Mass::LB, Mass::G],
    [1000, Volume::ML, Volume::L],
    [3, Volume::L, Volume::ML],
    [1, Count::UND, [850, Mass::KG]],
];

foreach ($cases as [$value, $from, $to]) {
    try {
        $result = Kuantia::convert($value, $from, $to);
        echo "$value $from → $result $to\n";
    } catch (\Exception $e) {
        echo "ERROR: {$e->getMessage()}\n";
    }
}

🧼 Diseño Limpio

✔️ Value Objects (UnitReference, UnitEquivalence)

✔️ Estrategia de conversión (UnitEquivalence, Direct, Graph)

✔️ Registry para manejar magnitudes registradas

✔️ Soporta extensibilidad futura

🏁 Conclusión

Kuantia es:

✅ Simple de usar

✅ Extensible

✅ Seguro

✅ Ideal para apps con necesidades de conversión física entre unidades y formatos comerciales