Créer une class Helper – Laravel 4

Nous allons voir aujourd’hui comment créer une class Helper dans notre projets Laravel 4. Dans notre exemple, nous allons y créer une fonction ‘findByEmail’ permettant de retrouver un utilisateur dans notre base de données grâce à son email.

Partant du principe que la colonne des emails dans notre base de données se nomme ’email’, la requête est simple à appliquer pour trouver notre utilisateur :

User::where(’email’, $email)->first();

Cependant, nous souhaiterions éviter d’avoir cela dans notre Controller. Nous allons donc créer un helper que nous allons pouvoir appliquer facilement dans différents Controller en toute sécurité.

Tout d’abord, nous allons créer un fichier Helper.php dans les dossiers suivants : app/classes/Helpers/

On renomme le namespace selon notre architecture de dossier, on récupère la class “User” nécessaire à aller trouver notre utilisateur et nous pouvons y aller.

Il faut ensuite ajouter la ligne suivante dans le fichier app/start/global.php

Notre helper est opérationnel ! Pour l’utiliser, il faut appliquer Helpers\Helper::findByEmail($mail);

 

Mais nous allons essayer de facilier l’usage de ce helper en supprimant le premier “Helpers\” dans notre appel. Pour cela, il faut créer un alias en procédant comme suit :

Ajouter dans ‘aliases’ en fin de fichier app/config/app.php la ligne :

Ensuite, il faut ajouter dans le ‘autoload { classmap }’ dans le fichier composer.json la ligne suivante :

Pour que notre modification de fichier composer soit prise en compte, il faut retrouver dans sa console et faire :

C’est tout ! Désormais, nous pouvons ajouter un utilisateur dans notre base de données avec le mail ‘test@email.com’ et retrouver toutes les informations dans notre controller :

Le dd (die – dump) permet d’afficher toutes les informations de notre variable $user avant de faire un die();

Rémi on twitterRémi on linkedin
Rémi
Chargé de projets web de profession, je partage à travers ce blog mes expériences, recherches et découvertes dans la création de projet web.