Assistants
Introduction
Les assistants, ou helpers en anglais, sont des fonctions globales prêtes à l’emploi qui permettent d’effectuer des actions variées dans une application Laravel. De nombreuses fonctions assistantes ont été utilisées tout au long de ce livre. La fonction dd par exemple permet d’afficher le contenu d’une variable et d’arrêter l’application. La fonction csrf_field quant à elle affiche un champ de formulaire pour protéger des attaques CSRF. Enfin, la fonction view retourne une vue et la fonction config permet d’accéder à une option de configuration. Les exemples sont nombreux : ce livre est truffé d’appels à ces fonctions.
Ces fonctions sont tantôt des raccourcis vers des mécanismes complexes de l’application, tantôt des outils simples pour des actions de tous les jours. Dans tous les cas, l’objectif est le même : rendre simples des opérations complexes que les personnes en charge de développer une application auront à réaliser tôt ou tard. Bien que de nombreuses fonctions aient été déjà présentées dans ce livre (principalement celles qui masquent la complexité du framework), il est important de s’attarder sur certaines d’entre elles qui répondent à des besoins bien spécifiques...
Manipuler des chaînes de caractères
Laravel offre de nombreuses fonctions pour manipuler les chaînes de caractères. L’un des avantages des fonctions Laravel par rapport à celles fournies nativement par PHP est que ces fonctions sont directement pensées pour gérer l’UTF-8, ce qui n’est historiquement pas le cas avec PHP. En coulisses, elles utilisent les fonctions de type mb_* au travers de la classe Illuminate\Support\Str fournie dans le Framework.
1. Transformer des chaînes
a. Casse : Serpents, Kebabs et Chameaux
La fonction snake_case permet de transformer la casse d’une chaîne de caractères en Snake Case (c’est-à-dire chaque mot séparé par un tiret bas), par exemple pour créer un nom de table en base de données à partir d’un nom de classe.
Fonction snake_case
echo snake_case('BonjourToutLeMonde');
// Affiche : bonjour_tout_le_monde
La fonction kebab_case permet de transformer la casse d’une chaîne de caractères en Kebab Case, avec des tirets entre chaque mot, à la manière d’une brochette.
Fonction kebab_case
echo kebab_case('BonjourToutLeMonde');
// Affiche : bonjour-tout-le-monde
La fonction camel_case permet de transformer la casse d’une chaîne de caractères en Camel Case, ce qui revient à mettre une majuscule entre tous les mots sauf sur le premier, comme pour un nom de méthode en PHP.
Fonction camel_case
echo camel_case('bonjour-tout-le-monde');...
Fonctions sur les tableaux
Réaliser des opérations sur les tableaux fait partie du quotidien des développeurs et développeuses PHP. On manipule des listes d’entités, pour les enrichir, les modifier, en extraire des portions ou encore les afficher. Le langage PHP propose déjà de nombreuses fonctions pour manipuler les tableaux (http://php.net/manual/fr/ref.array.php). Laravel y ajoute quelques fonctions pratiques. Plusieurs exemples sont présentés ci-dessous.
1. Récupérer des éléments
La fonction array_first récupère uniquement le premier élément d’un tableau passé en premier paramètre, qui remplit la condition décrite dans une fonction de rappel passée en deuxième paramètre, comme dans l’exemple suivant.
Fonction array_first
$array = [1, 2, 3, 4];
echo array_first($array, function ($value, $key) {
return $value > 2;
});
// Affiche : 3
La fonction array_last fonctionne à l’inverse et retournera la dernière occurrence qui remplit la condition.
Fonction array_last
$array = [1, 2, 3, 4];
echo array_last($array, function ($value, $key) {
return $value > 2;
});
// Affiche : 4
La fonction array_get permet d’extraire des valeurs d’un...
Autres fonctions assistantes
1. Chemins et dossiers
Il est possible d’obtenir le chemin complet vers les différents dossiers d’une application Laravel grâce aux fonctions assistantes *_path.
Fonctions *_path
echo base_path();
// Chemin complet vers la racine de l'application
echo app_path();
// Chemin complet vers le dossier « app » de l'application
echo database_path();
// Chemin complet vers le dossier « database » de l'application
echo config_path();
// Chemin complet vers le dossier « config » de l'application
echo resource_path();
// Chemin complet vers le dossier « resources » de l'application
echo public_path();
// Chemin complet vers le dossier « public » de l'application
echo storage_path();
// Chemin complet vers le dossier « storage » de l'application
Ces fonctions sont souvent plus pratiques que d’utiliser des chemins relatifs comme « ../../ », qui sont amenés à varier en fonction de l’évolution de l’application.
2. URL
La fonction url permet de créer une URL complète à partir d’une chaîne de caractères. On utilisera souvent cette fonction dans les vues pour...
Les collections
1. Introduction
Les collections sont une composante puissante de Laravel : certains les qualifient de tableaux avec des super-pouvoirs. Autrement dit, une collection est une instance de classe représentant une liste d’éléments qui possède de nombreuses méthodes pour la manipuler.
Les collections ont déjà été utilisées à plusieurs reprises dans cet ouvrage. En effet, chaque fois qu’on récupère des éléments de la base de données avec Eloquent, il s’agit en réalité d’une collection enrichie, ce qui a permis d’utiliser de nombreuses méthodes sur ces éléments.
Utiliser des collections permet par certains aspects de se rapprocher de la programmation fonctionnelle, telle qu’elle est parfois décrite de manière réductrice en JavaScript par exemple, en ajoutant des méthodes map, reduce et filter sur des listes d’éléments.
Adam Wathan a écrit un livre entier de qualité sur le sujet des collections pour Laravel : « Refactoring to collections » (https://adamwathan.me/refactoring-to-collections/). Il n’est malheureusement pas traduit en français à ce jour. Le sujet est donc suffisamment vaste pour en faire un livre et l’enthousiasme suscité est tel que plusieurs conférences ont déjà été tenues sur le sujet.
2. Transformer un tableau en collection
La première étape pour commencer à utiliser les collections est de transformer un tableau en collection. Pour cela, Laravel met à disposition la fonction assistante collect, qui prend en paramètre...
Tinker
Tinker (littéralement « bidouilleur ») est un outil en ligne de commande permettant de tester rapidement du code dans son contexte. Il permet en effet d’utiliser les classes et l’environnement d’une application Laravel, les files d’attente, les envois de mails, etc. On peut comparer cet outil avec un PHP CLI spécialement adapté pour Laravel.
Tinker s’appuie sur PsySH (https://github.com/bobthecow/psysh), un REPL (Read-Eval-Print-Loop) pour PHP.
Tinker permet donc de tester des bouts de code, sans avoir à polluer temporairement les fichiers de l’application. Il est parfois tentant d’ajouter une route pour tester un appel d’une classe ou une petite routine puis de l’effacer juste après. C’est dans ce genre de situation que Tinker s’avère utile, permettant de tester des bouts de code avant de les intégrer réellement à l’application, sans altérer les fichiers. Loin d’être indispensable, cet outil peut s’avérer précieux dans les phases de conception ou de débogage.
Pour lancer Tinker, utilisez la commande Artisan tinker.
Lancer Tinker
php artisan tinker
Ensuite, utilisez les commandes que vous souhaitez depuis le terminal et Tinker affichera le résultat.
Interface de Tinker
>>> echo \App\Models\User::find(5)->name;
Iorek
>>>...