Premiers pas
Laravel et le design pattern MVC
Laravel est basé sur le design pattern MVC (modèle-vue-contrôleur) qui sépare les responsabilités entre les données à afficher (modèle), la présentation (vue) et la logique concernant les actions effectuées par l’utilisateur (contrôleur). Nous allons voir comment Laravel implémente cette séparation afin de bien visualiser l’organisation du framework. Chaque élément du framework présenté dans ce chapitre sera approfondi dans un chapitre dédié.
1. Modèle : migrations et Eloquent
L’interaction avec les données de la base de données se fait en utilisant un ORM (Object-Relational Mapping) nommé Eloquent. Le principe est qu’un modèle est associé pour chaque table de notre base de données. Ce modèle est une classe PHP stockée dans app/Models. Il peut être utilisé pour toutes les opérations à effectuer sur la base de données (recherche, création, suppression, etc.).
Pour que ce modèle soit associé à une table, il faut la créer dans notre base de données. Un fichier de migration permet de décrire la table associée au modèle. Ces classes se trouvent dans le dossier database/migrations.
2. Vue : templates Blade
Les fichiers contenant...
Lignes de commandes : Artisan
Artisan est l’interface de ligne de commande de Laravel. Elle sera fréquemment utilisée dans ce livre. Cet outil permet de lancer des commandes à destination de Laravel pour créer un contrôleur, une migration, vider le cache, traiter les files d’attente, etc. Plus généralement, Artisan permet de gagner du temps dans la création de fichiers ou dans l’exécution de scripts.
Pour utiliser Artisan, il faut ouvrir un terminal de ligne de commande et taper une commande commençant par sail artisan depuis la racine de l’application (ou bien php artisan si vous n’utilisez pas Sail).
Affichage de la liste des commandes disponibles
sail artisan list
Commandes utiles pour déboguer
Il existe plusieurs façons de s’assurer du bon fonctionnement d’une application. En tant que développeurs, vous pouvez effectuer des tests manuels lors de la phase de développement en vérifiant par exemple qu’elle charge les données correctes. Ce genre de vérification est utile mais ne suffit pas à rendre une application fiable. Une fonctionnalité peut fonctionner à l’instant T où elle est développée, mais est-ce qu’elle fonctionnera toujours si une nouvelle fonctionnalité est ajoutée ? Qu’en est-il si une version supérieure de PHP est utilisée ? Pour faciliter cette vérification, l’écriture de tests confirme le bon fonctionnement de l’application de façon automatisée.
De plus, il est essentiel de savoir si les opérations importantes de l’application s’exécutent correctement une fois l’application mise en production. Si ce n’est pas le cas, il faut être en mesure de déterminer à quel niveau l’application ne fonctionne plus. L’ajout de logs peut répondre à ce besoin.
1. dd
L’instruction dd (dump and die) placée n’importe où dans le programme permet d’afficher le contenu d’une variable ou d’un objet de manière lisible...
Qu’est-ce qu’un assistant (helper) ?
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 Str::limit quant à elle tronque un morceau de texte en un nombre de caractères donné. 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...