Download the PHP package oscarricardosan/mapper without Composer
On this page you can find all versions of the php package oscarricardosan/mapper. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download oscarricardosan/mapper
More information about oscarricardosan/mapper
Files in oscarricardosan/mapper
Package mapper
Short Description Paquete PHP que mapea los DocComments de la clase y permite definir mutators y accessors
License MIT
Informations about the package mapper
Mapper
Paquete PHP agnóstico a frameworks provee una forma fácil con la cual mapear los atributos especificado en los DocComments de una clase, también permite agregar funcionalidad extra a través de mutators y accesors (setNameAttribute, getNameAttribute) al estilo de los Modelos de Laravel.
1. Por qué Mapper?
El Principio de lo Explicito establece: Intenta siempre favorecer lo explícito sobre lo implícito.
Ser explicito a la hora de hacer código es algo que ayudara a quien hace el código y a sus posibles sucesores a la hora de entender que es lo que esta pasando. Ejemplo:
Pero cuando tenemos un objeto con demasiados atributos ya no es tan fácil. ¡NO! la solución no es crear una función con más de 10 atributos. , en la mayoría de casos la solución es pasar un array con todos los atributos. Algo así:
Sin embargo, esto no es para nada explicito, cualquiera que llegue tendrá que hacer seguimiento para poer entener que es lo que esta llegando en el array $data.
Con Mapper podrías hacer:
2. Instalación
Ejecutar en consola
3. Uso
3.1. Definir una clase que extienda Mapper y tenga DocComments
Crea una clase que extienda a Mapper y en DocComments define las propiedades que van a ser mapeadas:
Con lo anterior $customerMap ha quedado con las propiedades que estaban en los DocComments incluyendo los valores por defecto:
3.2. Cargar valores
Existen dos formas para cargar valores a una clase que extiende de Mapper:
3.2.1. Forma masiva
Ya sea por el __construct o por setAttributesFromArray, si la propiedad que viene en el array no esta declarada en los DocComments el la omitirá.
Desde el constructor
Con el método setAttributesFromArray
3.2.2. Como propiedad
NOTAS:
-
Si asignas un valor a una propiedad que no esta definida en los DocComments no tendrá efecto y la propiedad retornara null.
- Los valores por defecto establecidos en DocComments permaneceran hasta que no los remplazes ya sea por un array[] o de forma directa ->.
3.3. Mutators y Accessors
Siguiendo la sintaxis de los modelos en Laravel podemos declarar mutators y accessors en la clase que extiende Mapper. En ellos puedes dejar la lógica para depurar los datos que generalmente nos llegan por request y que se pierde en el controlador al no ser reutilizable.
3.4. Alias
En ocaciones leemos datos desde un csv, excel u otros donde los datos de entrada vienen en vector el cual PHP covierte en una array con clave númerica. Para ello mutator permite establecer alias a las propiedades. Para usarlo solo debes usar la propiedad $alias de la clase que extiende mapper y !listo¡, con ellos los mutator y accessors funcionan comun y corriente, con lo cual no solo mapeas el vector y lo a asignas a su correspondiente propiedad sino que también lo puedes validar.