
Laravel - Fonctions Utiles que Tout le Monde ne Connaît Pas
Laravel est un cadre très complet qui offre à l'utilisateur de nombreux outils et opportunités de travailler sur le projet. Nos développeurs Laravel apprennent quelque chose de nouveau chaque jour en travaillant pour nos clients. J'ai décidé de vous présenter aujourd'hui quelques opportunités moins connues, mais très utiles fournies par les créateurs.
En plus de cet article, pensez à consulter aussi l'intuitivité et la rapidité d'écriture du code.
1. Les méthodes du planificateur peuvent être chaînées de manière plus efficace
Exécuter des tâches récurrentes est essentiel pour la plupart des projets d'applications web. Laravel répond à cette demande avec son "Task Scheduling". Cette solution est réalisée d'une manière très complète et conviviale.
// Chaque heure, les jours ouvrables, entre 8h00 et 17h00...
$schedule->command('foo')
-> weekdays()
-> hourly()
-> between('8:00', '17:00');
Toute chaîne logiquement correcte de ce type fonctionnera bien ici. C'est une solution très élégante et extrêmement confortable.
Il est également possible de créer une tâche plus complexe dans une autre classe et de la déléguer à notre commande.
// Chaque heure, les jours ouvrables, entre 8:00 et 17:00, si shouldSkip() renvoie true...
$schedule->command('foo')
->weekdays()
->hourly()
->between('8:00', '17:00')
->skip(function () {
return app('SkipValidator')->shouldSkip();
});
Ces types de simplifications sont une partie clé de l'idée de ce cadre. Vous pouvez en lire plus sur son unicité dans notre article comparant les différences majeures entre Laravel et Symfony.
2. Eloquent - la méthode find() prend de nombreux paramètres
La méthode find() peut être utilisée pour récupérer plusieurs enregistrements. Pour y parvenir, il suffit de passer un tableau comme argument. Dans ce cas, la méthode renverra la collection de modèles Eloquent avec l'identifiant donné (bien sûr s'ils existent). Aussi simple et évident que cela puisse paraître, je trouve souvent du code où quelqu'un a manifestement oublié cela.
// Trouver un utilisateur avec un id de 1.
$data = UserModel::find(1)
// Trouver des utilisateurs avec les id's 1, 2, 3, 4, 5.
$data = UserModel::find([1,2,3,4,5])
3. Générateur de requêtes sur plusieurs colonnes de façon simple
Prenons ici un exemple de requête SQL
SELECT
*
from
`users`
WHERE
`name` = 'developer'
AND `email` = '[email protected]'
LIMIT
1
En utilisant Eloquent, nous pouvons simplifier la requête et la présenter comme suit :
\App\User::whereNameAndEmail('developer','[email protected]')->first();
// L'exemple ci-dessus est une version simplifiée des entrées ci-dessous.
\App\User::where('name', 'developer')->where('email', '[email protected]')->first();
\App\User::where(['name' => 'developer', 'email' => '[email protected]'])->first();
La solution fonctionne avec les opérateurs "and" et "or".
\App\User::whereNameOrEmail('developer','[email protected]')->first();
Encore une fois, l'intuitivité et la "simplicité" du code écrit en Laravel sont mises en avant.
4. Joindre des fichiers à un e-mail
Quel que soit l'outil que nous utilisons, l'envoi de messages électroniques avec des pièces jointes et des photos s'avère souvent plus complexe et compliqué qu'il ne devrait l'être. Laravel respecte la règle KISS à cet égard.
Supposons que nous voulions joindre à notre message le fichier "secret_document_1.pdf", situé sous le chemin "/secrets_documents/secret_document_1.pdf".
Mail::send('emails.secret', [], function ($mail) {
$mail->to('[email protected]');
$mail->subject('Documents secrets que vous avez demandés');
$mail->attach(public_path('secrets_documents/secret_document_1.pdf'));
});
Il en va de même pour l'ajout de photos dans le corps d'un e-mail.
La photo que vous avez demandée:
<img src="{{ $message->embed(public_path('img/photo.jpg')) }}">
Merci!
5. Les valeurs originales de l'attribut
Après avoir apporté des modifications à l'enregistrement Eloquent, nous sommes en mesure de vérifier sa valeur originale.
$user = App\User::first();
// La valeur originale du champ mail -> [email protected]
$user->mail;
// Nous définissons une nouvelle valeur pour ce champ.
$user->mail = '[email protected]';
// Ce champ renverra maintenant sa nouvelle valeur -> [email protected]
$user->mail;
// En utilisant la méthode getOriginal(), nous sommes en mesure d'accéder à la valeur originale.
// Dans ce cas, elle renverra une valeur -> [email protected]
$user->getOriginal('mail');
// Nous sommes également en mesure de télécharger l'article original complet.
$user->getOriginal();
6. Vérifier si le modèle a changé
Comme dans le cas du point précédent, nous sommes en mesure de déterminer si notre installation a changé. Une méthode spéciale isDirty() a été préparée par les développeurs de Laravel à cet effet. Développons notre exemple précédent avec sa mise en œuvre.
$user = App\User::first();
// La valeur originale du champ mail -> [email protected]
$user->mail;
// La méthode renverra 'false' car nous travaillons sur un objet fraîchement acquis de la base de données.
$user->isDirty();
// Nous définissons une nouvelle valeur pour ce champ.
$user->mail = '[email protected]';
// La méthode renverra 'true' car nous venons de changer la valeur pour le champ mail
$user->isDirty();
// Nous pouvons aller plus loin et vérifier les changements pour les champs individuels.
// Elle renverra 'true'.
$user->isDirty('mail');
// Elle renverra 'false'.
$user->isDirty('name');
// Ce champ renverra maintenant sa nouvelle valeur -> [email protected]
$user->mail;
// En utilisant la méthode getOriginal(), nous sommes capables d'accéder à la valeur originale.
// Dans ce cas, elle renverra une valeur -> [email protected]
$user->getOriginal('mail');
// Nous sommes également en mesure de télécharger l'article original complet.
$user->getOriginal();
Résumé
Laravel est un cadre très complexe qui offre aux développeurs beaucoup de liberté et de possibilités. Il offre également de nombreuses fonctionnalités que tout le monde n'a pas besoin de connaître. Les fonctions que je présente ne représentent qu'une infime partie de toutes les possibilités que le système nous offre et que nous utilisons chaque jour dans notre agence de développement PHP.