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 :
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.
_ _
| | | |
| | __ _ _ __ __ ___ _____| |
| | / _` | __/ _` \ \ / / _ \ |
| |___| (_| | | | (_| |\ 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.
┌ 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 :
- app
- Http/
- Models/
- Providers/
- bootstrap
- app.php
- cache/
- config
- app.php
- database.php
- mail.php
- database
- migrations/
- factories/
- seeds/
- public
- index.php
- css/
- js/
- resources
- views/
- css/
- js/
- routes
- web.php
- api.php
- storage
- app/
- framework/
- logs/
- tests
- Feature/
- Unit/
- vendor
Structure du projet Laravel
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 :
app
: Fichiers générés par l'application.framework
: Fichiers générés par le framework.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 :
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 !
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 !
Discussions
Ajouter un commentaire
Vous devez être connecté pour accéder à cette fonctionnalité.