develia / commons
Common utility library
Requires
- php: >=8.2
- ext-json: *
- ext-mbstring: *
- ext-simplexml: *
Requires (Dev)
- phpstan/phpstan: 2.2.x-dev
- phpstan/phpstan-strict-rules: 2.0.x-dev
- phpunit/phpunit: *
Suggests
- ext-ctype: *
- ext-http: *
- ext-openssl: *
This package is auto-updated.
Last update: 2026-06-11 11:26:15 UTC
README
Biblioteca de utilidades de bajo nivel para PHP (>= 8.2) que extiende el lenguaje con una sintaxis más moderna y robusta: colecciones (estilo LINQ), IO, web/HTTP, reflexión, fechas, matemáticas, paralelización y utilidades generales.
- Namespace raíz:
Develia\(PSR-4, mapeado asrc/). - Extensiones requeridas:
mbstring,json,simplexml.
Instalación
composer require develia/commons
La librería incluye su propio autoloader (src/autoload.php) y es compatible con
el autoloading de Composer.
Patrones de diseño
- Try-Parse (inspirado en .NET): métodos
tryX(..., &$output): boolque evitan excepciones y permiten control de flujo basado en booleanos (Str,Date,RequestPayload,From,Util). Colecciones fluidas (LINQ style):
Develia\Fromes el núcleo del procesamiento de datos:from($array)->filter(...)->map(...)->toArray();Abstracción de entorno:
ParallelizeryOSadaptan la librería al sistema operativo y a las extensiones disponibles (Swoole, Amp, ReactPHP).
Mapa de utilidades
From— operaciones de colecciones (filter/map/reduce/join/distinct/sortBy…).Obj— utilidades exclusivas de objetos y clases: reflexión,toArray(objeto → array),getTraits/getInterfaces/getClass/getParentClass,isA/isSubclassOf/instantiate.Util— utilidades de propósito general (no exclusivas de objetos): comprobaciones de tipo (isString,isArray,isObject,isNullOrEmpty,isIterable…), conversiones (toInt,toString,toFloat,toBoolean), clonación de cualquier valor (clone), acceso dinámico a elementos/propiedades de arrays u objetos (get/set/tryGet/trySet/assign),fromArray(array →stdClass), y helpers comoclamp,compare,swap,hash,isBetweenyrepeat.Str/Date/Math— utilidades de cadenas, fechas y matemáticas.IO\StreamyIO/— sistema de archivos y streams orientado a objetos.Request/RequestPayload/Response/UploadedFile— capa HTTP.Reflector/ClassInfo— introspección de clases, interfaces y traits.
Obj vs Util
Obj agrupa únicamente las utilidades que operan exclusivamente sobre objetos y
clases, mientras que las utilidades genéricas viven en Util:
use Develia\Obj;
use Develia\Util;
// Objetos/clases -> Obj
$data = Obj::toArray($entity);
$traits = Obj::getTraits($entity);
// Propósito general -> Util
if (Util::isString($value)) { /* ... */ }
$copy = Util::clone($entity, true);
$n = Util::clamp($n, 0, 100);
Tests
vendor/bin/phpunit test