Initialisation et découverte d'un projet Laravel 12

Fait partie de la série Améliorer votre blog VitePress avec une API Laravel

Bonjour ! 👋

Heureux de vous retrouver. Cette série est la suite de Create a Blog with VitePress and Vue.js from Scratch, où nous avons exploré la configuration d'un blog Vitepress. N'hésitez pas à le consulter, bien que cela ne soit pas un prérequis pour suivre cette série.

Dans la session d'aujourd'hui, nous allons configurer notre projet à partir de zéro et explorer la structure du projet. À la fin de cet article, vous aurez une compréhension solide de l'organisation des dossiers, des composants clés d'un projet Laravel et de la manière de le naviguer efficacement.

Configuration du projet

Note

Cet article ne couvre pas l'installation de Laravel. Pour cela, veuillez vous référer à la documentation officielle.

Une des grandes fonctionnalités de Laravel est son outil CLI, qui vous aide à créer facilement un nouveau projet. Exécutez la commande suivante :

bash
laravel new mimram --pest # Mimram est le nom du projet

Note

À partir de Laravel 12, la commande laravel new ne vous demande plus de choisir le framework de test. En utilisant le drapeau --pest, Pest sera automatiquement configuré comme framework de test.

La configuration devrait ressembler à ceci :

Note

Pour cet article, j'utilise la version 12.x de Laravel.

txt
   _                               _
  | |                             | |
  | |     __ _ _ __ __ ___   _____| |
  | |    / _` |  __/ _` \ \ / / _ \ |
  | |___| (_| | | | (_| |\ V /  __/ |
  |______\__,_|_|  \__,_| \_/ \___|_|

 ┌ Quel kit de démarrage souhaitez-vous installer ? ────────────────┐
 │ › ● Aucun                                                      │
 │   ○ React                                                    │
 │   ○ Vue                                                      │
 │   ○ Livewire                                                 │
 └──────────────────────────────────────────────────────────────┘

Puisque nous avons un frontend existant, sélectionnez l'option Aucun.

Ensuite, il vous sera demandé quel type de base de données votre application doit utiliser.

txt
 ┌ Quelle base de données votre application utilisera-t-elle ? ───────────────────┐
 │ › ● SQLite                                                   │
 │   ○ MySQL                                                    │
 │   ○ MariaDB                                                  │
 │   ○ PostgreSQL                                               │
 │   ○ SQL Server (Extension PDO manquante)                     │
 └──────────────────────────────────────────────────────────────┘

Pour ce projet, choisissons SQLite.

SQLite est une bibliothèque C qui interagit directement avec un seul fichier de base de données sur le disque, ce qui la rend portable et nécessite peu d'entretien. Bien qu'elle ne convienne pas à tous les cas d'utilisation, c'est un excellent choix pour un simple blog qui ne connaîtra pas un trafic élevé.

Note

Pour en savoir plus sur SQLite, je vous recommande High Performance SQLite par Aaron Francis. C'est une excellente série pour maîtriser SQLite.

Enfin, dites oui lorsqu'on vous demande si vous souhaitez installer les dépendances JavaScript et construire les ressources.

Parfait ! Nous avons maintenant un nouveau projet Laravel pour commencer à construire notre API.

Structure du projet

Voici la structure du projet avec laquelle nous allons travailler :

    Structure du projet Laravel

  • app
  • bootstrap
  • app.php
  • config
  • app.php
  • database.php
  • mail.php
  • database
  • public
  • index.php
  • resources
  • routes
  • web.php
  • api.php
  • storage
  • tests

Explorons tous les dossiers et fichiers.

app

Le dossier app abrite le code principal de votre application, y compris les contrôleurs, modèles et services. C'est le cœur de votre projet et l'endroit où vous passerez la plus grande partie de votre temps à coder.

bootstrap

Le dossier bootstrap contient des fichiers qui initialisent l'application. Il comprend le fichier app.php responsable du chargement du projet.

Le dossier contient également le fichier providers, qui charge tous les fournisseurs de services. Un fournisseur de services enregistre des services supplémentaires, des routes, et étend Laravel par des macros et des helpers. Chaque package Laravel a un fournisseur de services comme point d'entrée. Tous vos fournisseurs de services se trouvent dans le dossier app/Providers.

config

Le dossier config contient tous les fichiers de configuration. Ici, vous pouvez trouver des paramètres pour la base de données, le mail, le cache, et plus encore.

database

Le dossier database stocke les migrations de base de données, les factories de modèles et les seeds. Les migrations contrôlent les versions de votre schéma de base de données. Les factories de modèles génèrent facilement de grandes quantités de données de test, et les fichiers de seed peuplent votre base de données avec des données de test en utilisant des factories de modèles.

Les factories de modèles se rapportent aux modèles situés dans le dossier app/Models.

node_modules

Le dossier node_modules contient toutes les dépendances JavaScript. Il est automatiquement généré par npm ou yarn lors de l'installation des dépendances.

public

Le dossier public stocke le contrôleur frontal et les ressources comme JavaScript, CSS et images. Il est servi par le serveur web. Le fichier index.php, point d'entrée de l'application, route toutes les demandes. Seul ce fichier est accessible publiquement, tandis que les autres fichiers sont chargés par index.php.

resources

Le dossier resources contient des fichiers de vues, des ressources brutes comme CSS et JavaScript, et des vues. Dans Laravel, les vues sont des fichiers PHP spécialisés appelés templates Blade. Blade est un moteur de templating avec une syntaxe élégante, permettant l'utilisation de code PHP et de directives comme @if et @foreach dans vos vues.

Les ressources brutes sont compilées par Vite et stockées dans le dossier public/build.

routes

Le dossier routes contient toutes les routes de l'application. Il inclut des routes web, des routes API, des routes de console, et plus encore. Chaque fichier gère des types de routes spécifiques, avec web.php traitant les routes orientées utilisateur et api.php gérant les routes API.

storage

Le dossier storage contient des templates Blade compilés, des sessions basées sur des fichiers, des caches, et des fichiers générés par le framework. Il est divisé en :

  1. app: Fichiers générés par l'application.
  2. framework: Fichiers générés par le framework.
  3. logs: Fichiers de log de l'application.

Recherchez le fichier laravel.log dans storage/logs pour les logs d'erreurs et les traces de pile.

tests

Le dossier tests abrite des tests automatisés. Laravel inclut Pest, un framework de test basé sur PHPUnit, pour écrire des tests unitaires et fonctionnels. Les tests s'assurent que votre application se comporte comme prévu et préviennent les changements qui pourraient la casser.

Tout au long de cette série, nous rédigerons des tests pour notre application, montrant la facilité d'utilisation de Laravel dans l'écriture des tests.

vendor

Le dossier vendor contient toutes les dépendances PHP, générées automatiquement par Composer. Il est comparable au dossier node_modules pour JavaScript, mais pour PHP.

Fichiers à la racine

Voici la liste des fichiers à la racine du projet :

.editorconfig

Le fichier .editorconfig aide à maintenir des styles de codage cohérents pour plusieurs développeurs à travers des éditeurs et IDE. Il définit des styles tels que l'indentation, les fins de ligne et l'encodage des caractères.

.env

Le fichier .env contient des variables de configuration spécifiques à l'environnement, configurant l'application sans modifications du code. Il inclut des détails sensibles comme les identifiants de base de données et les clés API.

.env.example

Le fichier .env.example sert de modèle pour le fichier .env, offrant une configuration d'exemple pour créer un nouveau fichier .env. Incluez ce fichier dans le contrôle de version pour aider vos collègues développeurs à configurer leurs environnements.

.gitattributes

Le fichier .gitattributes définit les attributs pour les chemins de votre répertoire, contrôlant le traitement de Git concernant les fins de ligne, les stratégies de fusion, et d'autres comportements pour des fichiers ou répertoires spécifiques.

.gitignore

Le fichier .gitignore spécifie les fichiers et répertoires que Git doit ignorer, empêchant l'engagement de données sensibles et de fichiers inutiles.

README.md

Le fichier README.md fournit un aperçu du projet, couvrant la configuration, l'utilisation et d'autres détails essentiels. C'est souvent la première référence pour les nouveaux développeurs du projet.

artisan

Le fichier artisan est l'interface en ligne de commande de Laravel, fournissant des commandes pour développer votre application, exécuter des migrations, générer du code et exécuter des tests.

composer.json

Le fichier composer.json est le fichier de configuration de Composer, décrivant les dépendances et les métadonnées du projet PHP comme le nom et la description du projet. Cela permet à Composer de gérer les dépendances.

Ce fichier inclut une clé scripts pour l'exécution des commandes composer run. Par exemple, composer run test exécute les tests de l'application. Parmi ces scripts, le script dev lance les nécessités de développement :

bash
npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1\" \"php artisan pail --timeout=0\" \"npm run dev\" --names=server,queue,logs,vite

Laravel est plus qu'un simple script ; plusieurs processus doivent s'exécuter pour le développement, garantissant que tout fonctionne correctement. Le serveur web gère les demandes, tandis que le serveur Vite sert les ressources, et la queue gère les travaux et les logs dans le terminal.

La commande composer run dev lance ces processus en parallèle en utilisant le package npm concurrently.

composer.lock

Le fichier composer.lock, généré par Composer, verrouille les dépendances à des versions spécifiques, garantissant la cohérence lors de la configuration. Commitez ce fichier dans le contrôle de version.

phpunit.xml

Le fichier phpunit.xml configure PHPUnit, le framework de test de Laravel, détaillant les paramètres de la suite de tests, le fichier de bootstrap et les options.

vite.config.js

Le fichier vite.config.js configure Vite, l'outil de construction frontend de Laravel, définissant la construction et les paramètres de bundling des ressources frontend comme JavaScript, CSS et autres.

package.json

Le fichier package.json est le fichier de configuration npm, décrivant les dépendances du projet JavaScript et les métadonnées, utilisé par npm pour la gestion des dépendances.

package-lock.json

Le fichier package-lock.json, généré par npm, verrouille les dépendances à des versions spécifiques, garantissant une installation cohérente à travers les configurations. Commitez ce fichier dans le contrôle de version.

Derniers mots

Le premier épisode peut sembler ennuyeux, mais il est essentiel.

Vous avez maintenant une compréhension plus claire d'un projet Laravel et de la structure de ses fichiers. La familiarité avec cette structure est cruciale, car vous devrez vous y référer tout le temps. Initialement intimidante, elle devient puissante et flexible une fois que vous l'avez comprise.

Dans le prochain épisode, nous allons configurer des éléments essentiels tels que le formatage, le linting et le refactoring automatique. Ça va devenir beaucoup plus intéressant dans les prochains épisodes !

Pd

Merci de me lire ! Je m'appelle Estéban, et j'adore écrire sur le développement web.

Je code depuis plusieurs années maintenant, et j'apprends encore de nouvelles choses chaque jour. J'aime partager mes connaissances avec les autres, car j'aurais aimé avoir accès à des ressources aussi claires et complètes lorsque j'ai commencé à apprendre la programmation.

Si vous avez des questions ou souhaitez discuter, n'hésitez pas à commenter ci-dessous ou à me contacter sur Bluesky, X, et LinkedIn.

J'espère que vous avez apprécié cet article et appris quelque chose de nouveau. N'hésitez pas à le partager avec vos amis ou sur les réseaux sociaux, et laissez un commentaire ou une réaction ci-dessous—cela me ferait très plaisir ! Si vous souhaitez soutenir mon travail, vous pouvez me sponsoriser sur GitHub !

Continuer la lecturePint, Rector, Larastan et Pest : Indispensables pour réussir

Réactions

Discussions

Ajouter un commentaire

Vous devez être connecté pour accéder à cette fonctionnalité.