← Retour
informatique

Créer son propre mini-framework PHP from scratch

Cédrix · 04/11/2025

Tout commence avec une idée simple : bâtir un système web léger, modulaire et compréhensible, sans dépendre d’un framework externe. Un framework maison, conçu pour gérer efficacement des posts, des commentaires et des pièces jointes, tout en respectant les principes de l’architecture MVC.

L’objectif

Disposer d’une base claire et extensible, où chaque brique du système — du routeur aux modèles — reste transparente et entièrement maîtrisable.


La structure du projet

L’application s’organise autour d’une arborescence simple et logique.

Au sommet, le dossier public/ joue le rôle de porte d’entrée du site, avec un fichier index.php qui orchestre tout : c’est lui qui intercepte chaque requête et la transmet au routeur.

Dans le dossier app/, on retrouve le cœur de la logique métier :

  • Core/ contient les fondations : le routeur et la classe de base des contrôleurs.
  • Controllers/ regroupe les différentes logiques d’action (posts, commentaires, pièces jointes).
  • Models/ gère la persistance des données — ici stockées dans des fichiers JSON pour plus de simplicité.

Chaque couche a un rôle précis, et l’ensemble reste clair, modulaire et facile à maintenir.


Le routeur : le cerveau du système

Au cœur du projet, le fichier Router.php agit comme un chef d’orchestre. Il écoute les requêtes entrantes, analyse leur méthode (GET, POST, PATCH, etc.) et les fait correspondre à la bonne route.

Grâce à un jeu de regex, le routeur reconnaît des chemins dynamiques comme /posts/:id et transmet automatiquement les paramètres au contrôleur concerné. Une architecture élégante, minimaliste et pourtant très puissante.


L’entrée principale : index.php

Tout commence dans public/index.php. Après avoir chargé les classes nécessaires, on y définit les routes — une à une — comme les règles d’un jeu.

Chaque route associe une méthode HTTP à une action précise :

  • Afficher tous les posts
  • Créer un nouveau post
  • Mettre à jour, publier ou masquer un post
  • Ajouter un commentaire ou une pièce jointe

Une fois toutes les routes enregistrées, le routeur intercepte la requête HTTP réelle et la redirige vers le bon contrôleur. C’est simple, direct et parfaitement lisible.


Les contrôleurs : la logique métier

Prenons PostController comme exemple. Chaque méthode correspond à une action concrète du système : afficher la liste des posts, en créer un, le modifier, le publier ou le masquer.

Les contrôleurs sont stateless : ils reçoivent les données, invoquent le modèle correspondant, puis renvoient une réponse JSON propre et explicite. Aucune dépendance superflue, aucun artifice — le code parle de lui-même.


Les modèles : la mémoire du système

Les modèles (Post, Comment, Attachment) assurent la gestion des données. Ici, les informations sont stockées dans des fichiers JSON — un choix volontairement simple, idéal pour le prototypage ou les petits projets.

Mais la structure est pensée pour pouvoir évoluer facilement vers une base de données réelle (MySQL, SQLite, etc.) via PDO. Chaque modèle sait comment lire, créer, modifier et sauvegarder ses propres objets, garantissant ainsi une séparation claire des responsabilités.


Une API claire et RESTful

Les routes suivent une logique RESTful, simple et cohérente :

PATCH /posts/42/publish
PATCH /posts/42/comments/17/hide
POST  /posts/42/attachments

L’API est lisible, homogène et prête à être consommée par n’importe quel front-end — qu’il soit en Vue.js, React, ou même une interface HTML minimale.


Pourquoi cette approche séduit

Ce mini-framework maison présente plusieurs atouts :

  • Zéro dépendance externe : tout est sous ton contrôle.
  • Architecture claire et didactique : parfaite pour comprendre la mécanique interne d’un framework.
  • Routing dynamique et élégant : les paramètres d’URL sont gérés naturellement.
  • Extensibilité : tu peux facilement ajouter l’authentification, des middlewares ou la validation des données.
  • Légèreté : un cœur minimal, mais robuste et fonctionnel.

Et après ?

La prochaine étape : implémenter la gestion complète des fichiers uploadés, avec vérification du type MIME, stockage sécurisé dans /uploads, et possibilité de masquer les pièces jointes à la demande.

Petit à petit, ton framework prend forme — un système MVC léger, propre et totalement maîtrisé. Tu n’utilises plus un framework : tu en construis un.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier !

Laisser un commentaire
Un code de vérification sera envoyé à votre adresse email.