jsanbae/metamorphoser

Procesa tus arrays en diferentes etapas

1.1.6 2021-11-10 12:22 UTC

This package is auto-updated.

Last update: 2024-10-07 16:59:36 UTC


README

Travis (.org) GitHub issues GitHub

Metamorphoser 馃悰 馃

Es un librer铆a dise帽ada para manipular arreglos asociativos (associative arrays) en varias etapas.

Aunque el principal uso que le doy es para procesar linea por linea archivos CSV.

Instalaci贸n

Metamorphoser es compatible y testeado en PHP 7.3 y superiores.

Esta librer铆a puede ser instalada a trav茅s de composer usando el siguiente comando:

composer require jsanbae/metamorphoser

Partes del Metamorphoser

Metamorphoser

脫rgano encargado de orquestar el orden los Pipes(etapas) para la metamorfosis y entregar los datos "metamorfoseados", como as铆 tambi茅n los datos con errores y lo datos filtrados.

Dataset

Entidad at贸mica en la cual se encapsula los datos, estructura necesaria para ser procesada dentro de la metamorfosis.

Pipes

脫rganos encargados de procesar los dataset. Se han definido 4 tipos, sin embargo, puedes crear los que tu quieras.

Arranger

Pipe encargada de dar estructura definida a lo datos

Mutator

Pipe encargada de modificar(formatear, limpiar, etc) la informaci贸n.

Validator

Pipe encargada de validar la informaci贸n, determina si informaci贸n tiene errores. Colecciona los errores de la informaci贸n.

Filter

Pipe encargada de quitar la informaci贸n, mediante filtros.

Ejemplo de uso

Favor ver archivos en directorio ./example

Laravel Friendly 馃槝

Si bien es una librer铆a que no tiene dependencia directa con Laravel Framework puedes integrarla sin problemas en tus proyectos Laravel, con el siguiente comando:

php artisan make:metamorphoser myMetamorphoser

El comando crear谩 los siguientes archivos base:

- app
  -- Metamorphosers
    --- myMorpher.php
    --- Arrangers
       ---- MyArranger.php
    --- Mutators
       ---- MyMutator.php
    --- Validators
       ---- MyValidator.php
    --- Filters
       ---- MyFilter.php

Implementado ser铆a:

use App\Metamorphosers\myMorpher;
....
$metamorposer = new myMorpher();
$metamorposer->morph($data); 
//o desde un archivo
$file_path = "/mydir/data.csv";
$separator = ";";
$metamorposer->morphFromCSV($file_path, $separator);

Salida:

//Output
array(3) =>
 ["data"] => ['data processed']
 ["errors"] => ['data errors']
 ["filtered"] => ['data filtered']

Contribuci贸n

Es librer铆a sencilla hecha con amor 鉂わ笍, pero se que puede mejorar con contribuciones de quienes la usen.

Sugiere tus propias mejoras, te invito a discutirlas en "Issues" antes de enviar tus "Pull Requests".

Los "Pull requests" para bugs siempre son bienvenidos, por favor explica tu bug que est谩s intentando corregir en el mensaje.

Hay s贸lo algunas pruebas unitarias en el PHPUnit. Ser铆a genial tener m谩s tests para obtener mayor cobertura en otros casos. Sientete libre en contribuir con eso.

Disclaimer

No se me ocurri贸 otro nombre m谩s rebuscado para esta librer铆a (y puta que lo pens茅)