Documentation · Chapitre 02

Pourquoi autant
de dossiers ?

Un projet range ses fichiers comme une maison range ses objets. Découvrons chaque emplacement sans essayer de tout mémoriser.

Aucun vocabulaire technique préalable n’est nécessaire. Chaque nouveau mot est expliqué avant d’être utilisé.

Commencez par seulement trois zones.

VISIBLEpublic/

Ce que le navigateur peut demander directement : le point d’entrée, les images et les fichiers publics.

VOTRE TRAVAILsrc/

Le code que vous écrivez : contrôleurs, modèles, routes, services et vues.

OUTILS INSTALLÉSruntime/

Les éléments techniques préparés par AML. Vous les utilisez, mais vous n’y placez pas vos pages.

Fichier, dossier et extension : quelle différence ?

Un fichier contient une information ou du code. Un dossier regroupe plusieurs fichiers. L’extension située après le point aide à reconnaître le contenu : .php pour du code PHP, .css pour la présentation visuelle, .json pour des informations structurées.

HomeController.php

un fichier de code PHP

home.css

un fichier qui décrit l’apparence

phpaml.json

un fichier de configuration lisible par AML

Les autres fichiers que vous rencontrerez souvent.

composer.jsonCONFIGURATION

Déclare les paquets PHP utilisés par le projet.

composer.lockVERSIONS

Mémorise les versions exactes installées pour reproduire le même environnement.

.envSECRETS LOCAUX

Contient les réglages propres à une machine. Ne le publiez pas s’il contient des secrets.

tests/VÉRIFICATION

Contient du code qui vérifie automatiquement le comportement de l’application.

storage/DONNÉES D’EXÉCUTION

Peut contenir journaux, cache ou fichiers produits pendant l’exécution, selon le projet.

Ce que vous modifiez, et ce que les outils gèrent.

VOUS MODIFIEZ

src/ · public/ · tests/ · phpaml.json · composer.json

LES OUTILS GÈRENT GÉNÉRALEMENT

runtime/ · composer.lock · cache

Cette séparation n’interdit pas toute modification avancée. Elle indique surtout où un débutant doit travailler sans risquer d’éditer des fichiers générés qui seront remplacés plus tard.

QUESTIONS DE DÉBUTANT

Vous vous demandez peut-être…

Dois-je modifier runtime/ ?

En général, non. AML installe et reconstruit ce dossier. Votre propre code vit surtout dans src/.

Pourquoi public/ est-il spécial ?

Le serveur Web l’expose au navigateur. Les secrets et le code interne doivent donc rester en dehors.

Puis-je créer mes propres dossiers dans src/ ?

Oui. Quand l’application grandit, vous pouvez y organiser vos services, composants ou autres responsabilités.

Un fichier indique à AML : « le projet commence ici ».

Ce fichier s’appelle phpaml.json. Il contient quelques informations sur le projet. Le mot manifeste désigne simplement cette fiche d’identité. Grâce à elle, AML retrouve le projet même si votre terminal se trouve dans un sous-dossier.

phpaml — zsh
project/
├── phpaml.json        ← la fiche d’identité
├── public/            ← ce que le Web peut voir
├── src/               ← votre code, y compris src/routes/
└── runtime/           ← les outils installés

Où placer un nouveau fichier ?

Une image accessible par URLpublic/
Une règle d’URLsrc/routes/
Une action HTTPsrc/controllers/
Une règle métier ou donnéesrc/models/
Une interface PHPsrc/views/
Une dépendance installéeruntime/

Appliquez la carte à notre bibliothèque.

phpaml — zsh
public/images/covers/clean-code.jpg
src/routes/WebApp.php
src/controllers/BookController.php
src/models/Book.php
src/views/books/show.php

La couverture est publique parce que le navigateur doit la télécharger. La route connaît l’adresse. Le contrôleur orchestre la recherche. Book représente le livre. La vue sait comment afficher son titre et sa couverture. Aucun fichier ne remplit deux rôles à la fois.

VÉRIFIEZ VOTRE COMPRÉHENSION

Pourquoi .env et src/ ne doivent-ils pas être placés sous public/ ?

Afficher la réponse

Parce que public/ est la zone exposée au serveur Web. Les secrets et le code interne doivent rester hors de cette racine.

À VOUS DE JOUER

Placez ces fichiers : logo.svg, CheckoutController.php, User.php, WebApp.php et un fichier de cache reconstructible.

Voir un indice

Utilisez public/, src/controllers/, src/models/, src/routes/ et runtime/.

EN RÉSUMÉ

Ce qu’il faut retenir

  • public/ est la seule racine Web.
  • src/ contient votre application, notamment src/routes/.
  • runtime/ peut être reconstruit.
  • phpaml.json identifie et décrit le projet.