La Gazette de Saint-Glinglin
Apprendre PHP 8
Vous débutez en PHP ? Apprenez les bases du langage, les objets, l'autoload de Composer et un routeur, sans framework, en mettant en ligne la gazette d'un petit village.
39 exercices 6 chapitres 5 100 XP Environ 13 h de pratique
29,00 € 19,00 € TTC, accès à vie
Prix fondateur encore 100 places.
Acheter le parcoursPremier chapitre gratuit avec un compte.
01
La une du jour
Gratuit
- Exercice 1 : Bonjour Saint-Glinglin Notions abordées echoVariableChaîne de caractères
- Exercice 2 : La date en tête Notions abordées VariableNombreConcaténationdate()
- Exercice 3 : Les articles du jour Notions abordées TableauTableau associatifforeach
- Exercice 4 : L'article à la une Notions abordées ifelseBooléenComparaison
- Exercice 5 : Le chapô Notions abordées Fonctions de chaînesmb_strlen()mb_substr()mb_strtoupper()
- Exercice 6 : Une fonction par article Notions abordées FonctionTypereturnhtmlspecialchars()
-
Fiche de cours du chapitre
02
La rédaction s'organise
🔒 Parcours complet
- Exercice 1 : La classe Article Notions abordées ClasseObjetConstructeurArguments nommés
- Exercice 2 : Un titre qui ne bouge plus Notions abordées readonlyVisibilitéMéthode$this
- Exercice 3 : Les rubriques Notions abordées Énumérationenummatch
- Exercice 4 : Qui a écrit ça ? Notions abordées CompositionObjet dans un objetMéthode
- Exercice 5 : Une photo pour la une Notions abordées Type nullablenullValeur par défaut
- Exercice 6 : Articles et petites annonces Notions abordées InterfaceimplementsPolymorphisme
- Exercice 7 : Un prix qui se tient Notions abordées Property hookgetsetprivate(set)Propriété virtuelle
- Exercice 8 : Le sommaire Notions abordées Fonction fléchéefnarray_filter()count()instanceof
- Exercice 9 : Les signatures Notions abordées array_map()array_unique()implode()
-
Fiche de cours du chapitre
03
Trop de require
🔒 Parcours complet
- Exercice 1 : Un fichier par classe Notions abordées require_once__DIR__Organisation du code
- Exercice 2 : Class not found Notions abordées DébogageMessage d'erreurOrdre de chargement
- Exercice 3 : Mon premier autoloader Notions abordées Autoloadspl_autoload_register()Fonction anonyme
- Exercice 4 : Les espaces de noms Notions abordées Espace de nomsnamespaceuse
-
Fiche de cours du chapitre
04
Composer prend le relais
🔒 Parcours complet
- Exercice 1 : Lire un composer.json Notions abordées Composercomposer.jsonJSONDépendance
- Exercice 2 : Déclarer PSR-4 Notions abordées PSR-4autoloadcomposer dump-autoload
- Exercice 3 : Adieu l'autoloader maison Notions abordées vendor/autoload.phpComposer
- Exercice 4 : Des sous-dossiers Notions abordées Espace de nomsusePSR-4composer dump-autoload -o
-
Fiche de cours du chapitre
05
Chaque article a son adresse
🔒 Parcours complet
- Exercice 1 : Installer un routeur Notions abordées composer requireDépendancevendor/
- Exercice 2 : La rédaction déménage Notions abordées Méthode statiqueSéparation des responsabilitésuse
- Exercice 3 : Des fonctions sans nom Notions abordées Fonction anonymeTableau associatifisset()
- Exercice 4 : Le contrôleur frontal Notions abordées RouteurContrôleur frontalConstante de classe$_SERVER
- Exercice 5 : Une page par article Notions abordées Paramètre de routeLienMéthode
- Exercice 6 : Les rubriques en ligne Notions abordées Paramètre de routeEnumfrom()
- Exercice 7 : Le facteur l'a perdu Notions abordées Code HTTP404405http_response_codetryFrom()
- Exercice 8 : L'article introuvable Notions abordées Exceptionthrowtrycatch
- Exercice 9 : Une exception à son nom Notions abordées Héritageextendsparent::Exception personnalisée
-
Fiche de cours du chapitre
06
La Gazette est en ligne
🔒 Parcours complet
- Exercice 1 : Un premier gabarit Notions abordées Gabarit<?= ?>ob_start()extract()require
- Exercice 2 : Le gabarit de l'article Notions abordées Syntaxe alternativeAccesseur
- Exercice 3 : Une mise en page commune Notions abordées GabaritMise en pageEnum::cases()
- Exercice 4 : Proposer une petite annonce Notions abordées FormulairePOST$_POSTValidationCode 422
- Exercice 5 : Pas de piège dans les annonces Notions abordées XSShtmlspecialcharsValidationis_string
- Exercice 6 : Chercher dans la gazette Notions abordées GET$_GETChaîne de requêtestr_contains()array_filter()
- Exercice 7 : Des contrôleurs en classes Notions abordées ContrôleurCallable::classInstanciation dynamique
-
Fiche de cours du chapitre
Apprendre PHP 8 en codant
Ce parcours fait apprendre PHP en écrivant du code, pas en regardant des vidéos. Chaque exercice se fait dans le navigateur, sans rien installer : PHP tourne dans la page, l'aperçu du site se met à jour pendant que vous codez, et des tests automatiques disent si chaque objectif est atteint.
Fil rouge : la gazette de Saint-Glinglin, un petit village. Elle commence par une page qui affiche « Bonjour » et finit en vrai site, avec une page par article, des rubriques, un formulaire de petites annonces et une recherche, le tout sans framework.
Ce que vous allez apprendre
- les bases : variables, tableaux, boucles, conditions et fonctions ;
- la programmation objet en PHP 8 : classes, propriétés promues,
readonly, énumérations, interfaces, et les property hooks de PHP 8.4 ; - les fonctions de tableau et les fonctions fléchées ;
- l'organisation du code : un fichier par classe, l'autoload, les espaces de noms ;
- Composer :
composer.json, PSR-4, installer une dépendance ; - un routeur, un contrôleur frontal, les codes HTTP et les exceptions ;
- des gabarits, des formulaires en
GETet enPOST, la validation et la protection contre les failles XSS.
Chaque exercice n'ajoute que quelques notions à la fois, et vous les utilisez aussitôt sur le site. Chaque chapitre se termine par une fiche de cours à garder, en page web et en PDF.
Pour qui
Pour celles et ceux qui débutent en PHP, ou qui l'ont appris il y a longtemps et veulent se remettre à niveau sur PHP 8. Il suffit de connaître un peu de HTML. À la fin, vous saurez ce qu'un framework comme Symfony fait pour vous, et le parcours Symfony sera la suite logique.
Le premier chapitre est gratuit avec un compte.