ghianco / kuantia
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/ghianco/kuantia
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