PHP propulse la majorité des sites Web dynamiques dans le monde et reste un langage back-end de référence pour le développement Web. Cette formation de 4 jours, alignée sur PHP 8.4 — avec mention de PHP 8.3 toujours supporté et perspectives PHP 8.5 — vous apprend à développer des pages Web dynamiques avec un projet structuré par Composer et l’autoloading PSR-4. Vous couvrez la POO moderne — constructor property promotion, enums, readonly, attributes, property hooks et asymmetric visibility — la persistance via PDO sur MySQL ou PostgreSQL avec requêtes préparées, les sessions, l’authentification avec password_hash et password_verify, la protection CSRF et les bonnes pratiques de sécurité OWASP. Vous découvrez les tests automatisés avec Pest, l’analyse statique avec PHPStan et un panorama des frameworks PHP modernes. Un module dédié vous apprend à exploiter un assistant IA pour générer et relire du code PHP de façon critique.
Public visé
Concepteurs et développeurs de sites Web.
Prérequis
Avoir suivi cette formation, ou en maîtriser les thèmes abordés :
Objectifs pédagogiques
À l’issue de cette formation, vous serez capable de :
- Développer des pages Web dynamiques en PHP 8.4 avec accès à une base de données
- Gérer un projet PHP avec Composer et l’autoloading PSR-4
- Concevoir des classes en POO moderne — constructor property promotion, enums, readonly, property hooks
- Sécuriser une application Web — XSS, SQL injection, CSRF, password hashing
- Persister des données via PDO sur MySQL ou PostgreSQL avec requêtes préparées
- Mettre en place des tests automatisés avec Pest ou PHPUnit
- Utiliser un assistant IA pour générer et relire du code PHP de façon critique
Programme
Jour 1 - Matin
Présentation et environnement
Présentation de PHP
- comprendre la place de PHP dans le Web côté serveur
- situer la version cible PHP 8.4 et son cycle de support
- repérer l’écosystème — Composer, frameworks, communauté
Travaux pratiques :
- Explorer un projet PHP existant et identifier ses fichiers clés
Environnement de développement
- installer PHP en local
- exploiter le serveur intégré PHP pour le développement
- mettre en place un éditeur adapté tel que VS Code ou PhpStorm
Travaux pratiques :
- Créer un projet vide et le servir via
php -Sen local
Composer et autoloading
- comprendre le rôle de Composer dans un projet PHP moderne
- déclarer des dépendances dans
composer.json - exploiter l’autoloading PSR-4
- comprendre les standards PSR
Travaux pratiques :
- Initialiser un projet avec Composer, organiser les classes en namespaces et exploiter l’autoloader
Jour 1 - Après-midi
Bases du langage moderne
Variables et types
- comprendre les types scalaires de PHP
- typer les valeurs et utiliser les unions
- manipuler les tableaux indexés et associatifs
- définir des constantes
Travaux pratiques :
- Écrire des fonctions utilitaires typées et observer les vérifications de type
Opérateurs et expressions
- combiner les opérateurs courants
- exploiter les opérateurs modernes —
match, nullsafe?->, null coalescing?? - composer des chaînes avec interpolation et heredoc
Travaux pratiques :
- Refondre une chaîne de
if/elsecomplexe en expressionmatchlisible
Structures de contrôle
- ramifier avec
if/elseet l’opérateur ternaire - choisir entre
switchetmatch - itérer avec les boucles standard
Travaux pratiques :
- Écrire un programme qui filtre et regroupe des données via différentes structures de contrôle
Fonctions
- déclarer une fonction typée avec types de paramètres et de retour
- valoriser les arguments par défaut et les arguments nommés
- comprendre passage par valeur et passage par référence
- découvrir les arrow functions et les first-class callables
Travaux pratiques :
- Écrire des fonctions utilitaires typées et les composer entre elles
Jour 2 - Matin
Programmation orientée objet
Classes et objets
- déclarer une classe et instancier des objets
- définir propriétés et méthodes avec leur visibilité
- comprendre constructeurs et destructeurs
Travaux pratiques :
- Modéliser une classe
Articlesimple et la manipuler
Constructor property promotion
- réduire le boilerplate avec la promotion des propriétés en constructeur depuis PHP 8
- combiner avec le typage et les valeurs par défaut
Travaux pratiques :
- Refondre une classe verbeuse en utilisant la promotion des propriétés
Héritage et interfaces
- hériter d’une classe avec
extends - déclarer et implémenter une interface
- comprendre les classes abstraites
- choisir entre héritage et composition
Travaux pratiques :
- Modéliser une hiérarchie
Document/Article/Pageavec héritage et interface
Traits et exceptions
- réutiliser du comportement transverse avec un trait
- gérer les erreurs avec
try/catch/finally - créer une exception personnalisée
- chaîner des exceptions
Travaux pratiques :
- Implémenter un trait de logging réutilisable et capturer une exception métier personnalisée
Jour 2 - Après-midi
POO moderne — PHP 8.1 à 8.4
Enums et types stricts
- déclarer une enum simple ou typée depuis PHP 8.1
- adopter
readonlysur les propriétés depuis PHP 8.1 et sur les classes depuis PHP 8.2 - exploiter les types DNF et
true/false/nulldepuis PHP 8.2
Travaux pratiques :
- Modéliser un statut d’article comme enum et créer une classe DTO
readonly
Attributes et reflection
- annoter une classe ou méthode avec un attribut depuis PHP 8.0
- exploiter
#[Override]pour sécuriser les hiérarchies depuis PHP 8.3 - découvrir la reflection pour lire des attributs
Travaux pratiques :
- Créer un attribut custom de routage et le lire via reflection
Constantes typées et nouveautés PHP 8.4
- typer une constante de classe depuis PHP 8.3
- exploiter les property hooks pour des accesseurs concis depuis PHP 8.4
- définir une visibilité asymétrique depuis PHP 8.4
- découvrir les lazy objects depuis PHP 8.4
Travaux pratiques :
- Remplacer des accesseurs
getX/setXpar des property hooks PHP 8.4
Jour 3 - Matin
Web et formulaires
Modèle requête / réponse HTTP
- comprendre le cycle d’une requête PHP côté serveur
- exploiter les superglobales —
$_GET,$_POST,$_FILES,$_SERVER,$_COOKIE - définir des en-têtes et codes de statut HTTP
Travaux pratiques :
- Implémenter un mini-routeur basé sur la méthode et l’URI de la requête
Formulaires HTML
- traiter une soumission de formulaire en
POSTouGET - récupérer les valeurs et les valider côté serveur
- conserver les saisies en cas d’erreur
Travaux pratiques :
- Créer un formulaire de contact validé côté serveur avec retour des saisies
Sécurité de base
- échapper le HTML pour prévenir les XSS —
htmlspecialchars - valider et filtrer les entrées utilisateur —
filter_var - comprendre les risques d’injection côté HTML
Travaux pratiques :
- Auditer un formulaire vulnérable au XSS et le corriger
Upload de fichiers
- recevoir un fichier via
$_FILES - valider type, taille et extension
- déplacer le fichier vers un emplacement sécurisé
Travaux pratiques :
- Implémenter un upload d’image avec validation MIME et taille
Jour 3 - Après-midi
Persistance
Gestion de fichiers
- ouvrir, lire et écrire un fichier
- inclure et exiger des fichiers PHP
- gérer les chemins de manière portable
Travaux pratiques :
- Implémenter un journal d’événements écrit dans un fichier texte
Manipulation de JSON
- encoder et décoder du JSON nativement
- valider une chaîne JSON avec
json_validatedepuis PHP 8.3 - convertir entre objets, tableaux et JSON
Travaux pratiques :
- Exposer et consommer une mini-API JSON entre deux scripts
Accès aux bases de données avec PDO
- se connecter à une base avec PDO sur MySQL ou PostgreSQL
- exécuter une requête préparée pour prévenir les SQL injections
- récupérer les résultats sous forme de tableau ou d’objet
- gérer les transactions
Travaux pratiques :
- Connecter un projet à PostgreSQL via PDO, créer une table
articleset implémenter un CRUD complet en requêtes préparées
Jour 4 - Matin
Sessions, authentification et sécurité
Sessions PHP
- comprendre le rôle d’une session côté serveur
- démarrer, lire et oublier des données de session
- protéger une session — régénération de l’identifiant, expiration, cookies sécurisés
Travaux pratiques :
- Implémenter un panier d’achat persistant via la session
Authentification
- hacher un mot de passe avec
password_hash - vérifier un mot de passe avec
password_verify - gérer la déconnexion et la régénération de session
Travaux pratiques :
- Implémenter une page de connexion sécurisée avec hachage de mot de passe et session
Protection CSRF
- comprendre l’attaque CSRF
- générer et valider un jeton CSRF par formulaire
- positionner les cookies en
SameSite
Travaux pratiques :
- Protéger les formulaires sensibles avec un jeton CSRF unique
Sécurité globale
- récapituler les principales vulnérabilités OWASP côté PHP
- exploiter les fonctions natives de génération aléatoire et de hachage
- éviter les pièges classiques — exposition d’erreurs, accès direct aux fichiers, secrets en clair
Travaux pratiques :
- Auditer une mini-application existante avec une checklist sécurité et corriger les défauts
Jour 4 - Après-midi
Qualité, écosystème et IA
Tests automatisés
- choisir un framework — Pest pour son focus et sa syntaxe expressive, ou PHPUnit
- écrire un test unitaire et un test d’intégration
- isoler les dépendances avec des mocks
- intégrer les tests dans la CI
Travaux pratiques :
- Ajouter une suite de tests Pest sur le module CRUD de la veille
Outillage qualité
- analyser statiquement avec PHPStan
- formater avec PHP-CS-Fixer ou PHP_CodeSniffer
- moderniser automatiquement avec Rector
- exploiter les règles PSR-12
Travaux pratiques :
- Intégrer PHPStan et un formateur à un projet existant et corriger les avertissements
Frameworks PHP — panorama
- positionner Laravel comme framework full-stack expressif
- positionner Symfony pour les architectures d’entreprise
- découvrir les micro-frameworks comme Slim ou Mezzio
- choisir un framework selon le projet
Travaux pratiques :
- Créer un endpoint identique en PHP nu, en Slim et en Symfony minimal pour comparer
PHP et IA
- situer les assistants disponibles
- formuler un prompt qui précise la version PHP et les conventions PSR
- repérer les pièges spécifiques — versions PHP mélangées dans les exemples, API dépréciées, code legacy
mysql_* - vérifier systématiquement le code généré — exécution PHP, tests Pest, PHPStan
Travaux pratiques :
- Projet final : application PHP 8.4 avec Composer, namespaces PSR-4, classes modernes, PDO PostgreSQL avec requêtes préparées, sessions et authentification, formulaires CSRF, tests Pest et PHPStan vert ; un module CRUD est généré avec un assistant IA puis corrigé pour respecter les conventions PSR et la sécurité
Modalités d’évaluation des acquis
En cours de formation, par des études de cas ou des travaux pratiques. En fin de formation, par un questionnaire d’auto-évaluation.
Pour aller plus loin
Cette formation donne accès aux formations suivantes :
- Drupal 11 - Initiation
- Laravel - Initiation
- PHP - Développer des applications web
- PHP - Consolider vos connaissances
- PHP - Nouveautés de la version 8
- Symfony - Initiation
- Symfony 7 - Développement Web
- Zend - Initiation
- Sécurité des applications php
Voir aussi
Vous serez peut-être intéressés par les formations suivantes :
- Drupal 11 - Développeurs Back-End
- PHP - Développer des applications web
- PHP - Fonctions avancées pour le développement web
- PHP - Consolider vos connaissances
- PHP - Développement de webservice REST
- Ruby On Rails - Écriture de scripts RoR
- Symfony - Avancé
- WordPress - Pour les développeurs
Formation DEV-PHP-100 — PHP - Initiation. Domaine : Développement. Niveau : Initiation. Durée : 4 jours (28 heures). Mots-clés : php 8.4, composer, psr-4, poo, enums, readonly, attributes, property hooks, asymmetric visibility, pdo, mysql, postgresql, sessions, password_hash, csrf, owasp, pest, phpstan, laravel, symfony, ia, développement, initiation, web, backend. Cylian Formation, Dijon.