Atelier Professionnel PHP 8 MySQL MVC DAO · PDO SCRUM Sécurité PHPUnit

Site Gallo-Romain de Fâ

Conception et développement d'une application web PHP 8 en architecture MVC avec les patterns PDO et DAO, destinée à fluidifier la gestion des entrées et des ateliers du site archéologique gallo-romain de Fâ — incluant une analyse de risques sécurité, des tests unitaires et une gestion de projet agile SCRUM.

Outils & Technologies

PHP 8 — MVC, PDO, DAO
MySQL / MariaDB
Pattern MVC + DAO
Analyse de risques & sécurité
PHPUnit — tests unitaires & intégration
SCRUM — Product Backlog, sprints
GIT — branches & résolution de conflits
HTML / CSS — vues
VS Code

Contexte

Le site gallo-romain de Fâ, site archéologique et touristique, fait face à une affluence croissante qui engendre des difficultés d'organisation pour le personnel : gestion des entrées, suivi des ateliers proposés aux visiteurs, coordination des créneaux horaires et des réservations.

Dans le cadre du BTS SIO 2e année, cet atelier consistait à proposer une solution numérique pour fluidifier ces processus. L'objectif était de concevoir et développer une application web complète en PHP 8 reposant sur une architecture MVC robuste, les patterns PDO et DAO pour l'accès aux données, et une approche professionnelle incluant sécurité, tests et gestion de projet agile.

  • Gestion des événements, horaires et tarifs du site
  • Architecture MVC avec patterns PDO et DAO — accès aux données découplé
  • Analyse de risques sécurité : scénarios de menaces, gravité & vraisemblance, contre-mesures
  • Tests unitaires et d'intégration automatisés avec PHPUnit
  • Gestion de projet SCRUM — Product Backlog, priorisation par valeur métier et ROI
  • Gestion de versions GIT — création de branches et résolution de conflits

Gestion de projet — SCRUM

Le projet a été conduit selon la méthodologie SCRUM, avec la mise en place d'un Product Backlog listant l'ensemble des fonctionnalités à développer, priorisées selon leur valeur métier et leur retour sur investissement (ROI).

La gestion de versions a été assurée via GIT avec une stratégie de branches : chaque fonctionnalité développée dans sa propre branche, puis intégrée après révision et résolution des conflits de fusion.

Méthodologie & principes
Méthode Agile SCRUM
Cycle de la méthode Agile SCRUM
Étoile SCRUM — valeurs et piliers
Les 5 valeurs SCRUM
  • Product Backlog — fonctionnalités priorisées par valeur métier et ROI
  • Sprints — développement itératif et incrémental des fonctionnalités
  • Branches GIT — une branche par fonctionnalité, fusion contrôlée
  • Résolution de conflits — gestion des merges et synchronisation d'équipe

Architecture technique — MVC

L'application repose sur l'architecture MVC : les Modèles correspondent aux classes DAO (BaseDAO, EvenementDAO, HoraireDAO, TarifsDAO), les Vues aux fichiers PHP dans le dossier vues/, et les Contrôleurs aux classes dans controleurs/. La connexion à la base de données est centralisée via PDO.

Schéma d'architecture MVC
Schéma architecture MVC
Séparation Modèle / Vue / Contrôleur — patterns PDO & DAO pour l'accès aux données
Configuration de la base de données
Configuration base de données
Connexion PDO centralisée — fichier de configuration de la base de données

Modèles — Pattern DAO

Le pattern DAO (Data Access Object) isole la logique d'accès à la base de données dans des classes dédiées. Chaque entité (événement, horaire, tarif) dispose de son propre DAO héritant d'un BaseDAO commun, garantissant maintenabilité et testabilité du code.

Base DAO & modèles des entités

Contrôleurs

Les contrôleurs font le lien entre les requêtes utilisateur et les données issues des DAO. Chaque entité dispose de son propre contrôleur : ControleurEvenement pour les événements et ControleurHoraire pour la gestion des créneaux horaires des ateliers.

Contrôleurs — ControleurEvenement & ControleurHoraire

Vues & Application

Les vues PHP affichent dynamiquement les données récupérées par les contrôleurs depuis les DAO. L'interface permet aux visiteurs de consulter les événements, de voir les détails d'un atelier avec ses créneaux horaires et tarifs, et de réserver leur place.

Interfaces de l'application
Code des vues PHP

Sécurité applicative

La sécurité a été un axe central du projet. Une analyse des risques formelle a été menée : identification des scénarios de menaces, évaluation de leur gravité et de leur vraisemblance, puis mise en œuvre de contre-mesures techniques adaptées.

Injection SQL

Contre-mesure : requêtes PDO préparées avec paramètres liés — aucune concaténation directe dans les requêtes.

XSS (Cross-Site Scripting)

Contre-mesure : échappement systématique des sorties avec htmlspecialchars() avant affichage dans les vues.

Accès non autorisé

Contre-mesure : contrôle d'accès côté serveur, validation des entrées utilisateur et séparation des rôles.

Exposition des données

Contre-mesure : gestion des erreurs PDO sans exposition de détails techniques, configuration de la base de données hors racine web.

Tests unitaires & d'intégration

Pour garantir la fiabilité du code, des tests unitaires et d'intégration automatisés ont été réalisés avec PHPUnit. Ces tests couvrent les méthodes des DAO (récupération, insertion, mise à jour) ainsi que les contrôleurs, afin de détecter rapidement toute régression lors des évolutions du code.

Pyramide des tests
Pyramide des tests
Pyramide des tests — de la base unitaire aux tests d'intégration et end-to-end
  • Tests unitaires — validation isolée des méthodes DAO (PDO, requêtes préparées)
  • Tests d'intégration — vérification du bon fonctionnement de la chaîne Contrôleur → DAO → BDD
  • Exécution automatisée — détection rapide des régressions lors des mises à jour

Ma contribution

  • Architecture MVC complète — mise en place de la structure Modèle / Vue / Contrôleur avec PDO et DAO
  • Classes DAO — implémentation de BaseDAO, EvenementDAO, HoraireDAO et TarifsDAO avec requêtes PDO préparées
  • Contrôleurs — développement de ControleurEvenement et ControleurHoraire pour le routage des requêtes
  • Analyse de risques sécurité — identification des menaces (SQL, XSS, accès non autorisé) et mise en œuvre des contre-mesures
  • Tests PHPUnit — rédaction des tests unitaires et d'intégration couvrant les DAO et les contrôleurs
  • Gestion de projet SCRUM — construction du Product Backlog, priorisation par valeur métier et gestion des sprints

Résultats & Apprentissages

MVC
Architecture robuste avec patterns PDO & DAO
SCRUM
Gestion agile avec Product Backlog priorisé
GIT
Versioning professionnel — branches & merges
4
Risques sécurité identifiés & contrés

Ce projet m'a permis de consolider mes compétences en conception logicielle professionnelle, en appliquant une architecture MVC rigoureuse et les patterns DAO/PDO dans un contexte concret. La dimension sécurité m'a sensibilisée à l'identification des risques applicatifs et à la mise en œuvre de contre-mesures adaptées dès la conception.

La méthodologie SCRUM et l'utilisation avancée de GIT (branches, conflits) m'ont donné une expérience de la gestion de projet agile et du travail collaboratif professionnel. Les tests automatisés avec PHPUnit ont renforcé ma rigueur dans la livraison d'un code fiable et maintenable.

Compétences BTS SIO validées

B2.1 Concevoir et développer une solution applicative
B2.2 Assurer la maintenance corrective ou évolutive
B2.3 Rédiger la documentation technique
B1.4 Travailler en mode projet
B2.4 Concevoir et réaliser une base de données
B3.2 Participer à la sécurisation d'un système informatique
B1.1 Gérer le patrimoine informatique
Atelier précédent
Android Visiteur DAO
Voir les compétences
Atelier suivant
CanisPro Éducation