Macros en Laravel

macros en laravel

Hay varias cosas de Laravel muy buenas , pero que no se usan muy a menudo, las macros son una de ellas.

¿Que son las macros en laravel?

Son la forma en que la que se pueden agregar funcionalidades de forma personalizada a diferentes componentes de Laravel.

Esto es posible gracias a una clase llamada Macroable, que nos permite “jugar” sobre ciertas clases.

Registrar una macro

Puedes registrar una macro en los services providers, te recomiendo que crees un MacroServiceProvider para esto, crear uno es tan sencillo como ejecutar dentro de nuestra consola:

No te olvides de registrarlo dentro del archivo config/app.php

Response Macro

Imaginemos por ejemplo que estamos haciendo una pequeña api y queremos que responda en json, con un formato que necesitamos (en este caso debe ir la data y el estado).

Entonces podemos registrar nuestra macro para la clase Response de esta manera

Gracias a este simple código en nuestro controlador podemos usar la macro dentro de esa clase, como mostramos a continuación.

Eloquent Macro

Eloquent como saben es el ORM de Laravel y también es posible hacer macros con él, lo vamos a demostrar a trabes de un sencillo ejemplo.

Quiero que, usando que Builder los datos lleguen paginados si una condición es verdadera y en caso que no, me envié todos los registros.

Listo, ahora solo debo enviar una función que me devuelva true o false y usar la macro en mi controlador

En este caso que se envía la página dentro del request, la consulta se paginara y sino se hará un get(), permitiendo ahorrar un poco de código. También se puede usar macros para las relaciones de Eloquent.

Así que ya puedes buscar que clases son macroables (según tu version de Laravel) y empezar a crear tus propias macros !!

 

Comparte este artículo

Entra en la discusión y deja tu comentario

Veces