develia/commons

Common utility library

Maintainers

Package info

bitbucket.org/develia/develia.commons.php

pkg:composer/develia/commons

Statistics

Installs: 528

Dependents: 2

Suggesters: 0

0.9.4 2026-06-11 11:25 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 a src/).
  • 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): bool que evitan excepciones y permiten control de flujo basado en booleanos (Str, Date, RequestPayload, From, Util).
  • Colecciones fluidas (LINQ style): Develia\From es el núcleo del procesamiento de datos:

    from($array)->filter(...)->map(...)->toArray();
    
  • Abstracción de entorno: Parallelizer y OS adaptan 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 como clamp, compare, swap, hash, isBetween y repeat.
  • Str / Date / Math — utilidades de cadenas, fechas y matemáticas.
  • IO\Stream y IO/ — 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