Créer une macro sous Laravel
Les macros Laravel permettent d’ajouter ses propres méthodes à une classe interne à Laravel.
Macroable ?
Dans certaines classes “core” de Laravel, un trait est injecté : use Macroable;
.
Tu le trouveras par exemple dans les classes Collection
, Request
, Redirect
, … et pleins d’autres.
Ce trait va te permettre de créer tes propres méthodes.
Exemple avec Redirect
Prend par exemple la classe Redirect
. Elle dispose d’une méthode with
qui permet d’assigner une variable qui sera disponible sur la page de redirection.
Ok, et si on souhaite rajouter une notion de type, pour que côté front on puisse différencier un message de succès (et le mettre en vert), d’un message d’alerte (et le mettre un rouge, oui ils sont comme ça les devs front). Tu me vois venir ?
Voilà, on châine, ça marche mais c’est pas beau. L’idéal serait de pouvoir écrire ça :
Non ?
Cherche pas, la réponse est OUI !
Donc c’est là qu’on parle de macro. Pour enregistrer notre méthode alert
, ça se passe dans la méthode boot()
d’un service provider (AppServiceProvider ira très bien) :
C’est pas beautiful ?
Exemple avec Filesystem
Un autre exemple ? Extraire un fichier zip, ca prend 4 lignes :
Si t’es comme moi, t’as envie d’écrire ça en une seule ligne non ?!
Et bien, il me suffit d’écrire la macro suivante :
Allez, je te laisse taper “Laravel macro” dans ton moteur de recherche préféré et tu devrais tomber sur d’autres exemples ;)