Utiliza el Service Provider de Laravel para simplificar tu código

Utiliza el Service Provider de Laravel

Que levante la mano quien no a haya tenido un código como este …

 

Obviamente yo no, soy el que escribe y ademas, en ese momento tuve una visión de Taylor Otwell iluminado diciendo me.

 

“use the Service Provider…”

 

jajaja.

La verdad es que, confieso que también he tenido código de esa forma. pero te has de preguntar

¿Qué tiene eso de malo?

Y en realidad no tiene nada de malo y no es un error, pero que pensaría si te digo que en algún tiempo eso puede darte la incomodidad de tener que hacer cambios en mas de un lugar.

¿Qué como es eso?

muy bien, solo porque veo que te esta dando curiosidad, que te parece si miramos mas de cerca el método create del ejemplo.

observa la primera linea, sí notas  como la clase AddressClient recibe como parámetro la clase ApiContext mediante $this->apiContext

Con eso en mente,  ahora imagina que va a pasar cuando tengas mas clases con esa misma dependencia.

va a ser un verdadero problema, porque tienes que copiar el código del constructor en mas de un controlador

y es probable que haciendo cambios en los parámetros de configuración de la clase ApiContext tengas que cambiar también todo el código copiado a otros controladores.

En este punto puede ser que ya no te este gustando tanto tener el caso que presente en el inicio.

y es en este momento en el que te digo que existe una forma de evitar la incomodidad que puedes tener en el futuro.

Mediante algunos cambios realmente sencillos, aprovechando el Service Provider y el contenedor de dependencias que ya nos proporciona Laravel.

Podemos llegar a tener algo mas sencillo de leer y mantener

shocked_dog

Si, todo eso va a hacer Laravel por tí.

Asi que veamos como.

 

Mudando nuestro código al  Service Provider

 

La razón para esto, es que es un excelente punto para colocar el código que requiere ser configurado o tiene dependencias con otras clases.

y es donde Laravel hace su magia y nos ayuda a crear objetos por nosotros!.

En nuestro ejemplo lo primero que vamos a hacer sera mover los datos que pueden estar en el config.

Moviendo elementos al config.

 

Este es uno de los lugares que a veces  no utilizamos, y es genial para tener datos que nos sirven para configurar el estado inicial de nuestras clases.

Así que, vamos a meter todos los valores que recibe nuestro ApiContext en un archivo de configuración que vamos a nombrar como config/block_cyhper.php

De esta forma si quieres cambiar los parámetros solo tienes que hacerlo desde el config y de esa forma no tienes que tocar nada en el controlador,

 

Creando nuestro Service Provider

Llego la hora de la verdad y vamos a hacer la parte mas difícil, pero no te preocupes en realidad lo estoy diciendo para asustar!

Muy bien creemos nuestro Service Provider

Ahora abre el archivo que se genero en app/Provider/BlockChyperService.php

y en el método register hacemos los cambios necesarios y hacemos uso de bind.

Con esto le indicamos al contenedor de dependencias que resuelva y cree por nosotros la clase ApiContext.

ademas observa que podemos acceder al archivo de configuración para crear la clase.

Pero vamos que no hemos terminado, pero antes veamos como esta quedando nuestro constructor.

¿Qué te parece? mil veces mas sencillo.

pero… se puede mejorar, así que demos un paso mas.

volvamos al método register y ahora hagamos uso del bind para nuestra clase AddressClient

Observa como construimos el AddressClient pasando a su constructor el ApiContext.

Así que manos a la obra vamos por el ultimo paso, así que ajustemos el constructor de nuestro controlador y el método create.

¿Qué te parece? creo que mucho mejor, mas sencillo y menos complejo de leer.

Que sigue

Dos cosas, aplicar la idea que acabamos de ver en tú código, comienza con una clase o un controlador y ve como te queda.

Ademas es importante que leas la documentación, el Service Provider es una pieza fundamental para que crees código potable que después puedes utilizar en otros proyecto de Laravel

También es un punto de entrada para utilizar el Service Container que en nuestro ejemplo nos ayudo a crear una clase con dependencias, pero tienes mucha utilidad.

Y por ultimo espero que te haya gustado el articulo, y recuerda si tienes duda deja tu mensaje!.

Y recuerda compartir de esa forma nos ayúdanos a llegar mas lejos.

Comparte este artículo

Entra en la discusión y deja tu comentario

Veces