Site de Bertrand LIAUDET

GC5-2024-2025 - S1 - Application WEB - Back et Front - MVC - POO - ORM en PHP - Initiation aux frameworks WEB - Jeudi matin

24 octobre 2024, par Bertrand LIAUDET


Objectifs du cours

  • Comprendre les frameworks WEB
  • Comprendre le MVC - la POO - l’ORM dans les frameworks
  • POO-PHP - autoload
  • Hydratation en POO-PHP
  • Session PHP avec hydratation
  • Application : projet Hackathon -> Application WEB à développer en PHP-POO-MVC
  • Annexes JavaScript + MediaQueries :
  • Fournir une API JSON en PHP
  • AJAX : récupérer des données d’API JSON.
  • JavaScript côté client pour dynamiser sa page.
  • Application adaptable sur mobile : CSS "design responsive" et "media queries".
  • Outils :

  • Visual Studio Code + extensions PHP.
  • Sublime Text : pour avoir un petit éditeur de texte
  • Chrome (ou Firefox).
  • WAMP avec MySQL 8
  • Plan de cours : 9 séances

  • 2 séances->2/8 : Rappels de 4è année
  • Architecture PHP + MVC + MySQL_PDO
  • 2 séances->4/8 : POO en PHP - autoload
  • 2 séances->6/8 : Hydratation en PHP
  • 2 séances->8/8 : Session et hydratation en PHP
  • Si on peut, on aborde :
  • Application projet : Hackathon (peut-être avancé en CSI)
  • Produire une API en PHP (rappels)
  • Lire une API en PHP : JavaScript- AJAX
  • JavaScript HTML dynamique (rappels)
  • CSS Media Queries (rappels)
  • Suivi du cours 2024-2025 - 1er semestre



    J-1 Jeudi 24/10 : Introduction et installation de base


  • Introducion courte :
  • Framework : une organisation de dossiers et de fichiers, centré sur l’architecture MVC
  • MVC -> ici
  • POO et ORM : le lien entre la base de données et les classes.

  • TD 1 - 2 :
  • Installation de l’application 1 : à charger et à faire tourner -> ici
  • On met de dossier dans le dossier home du dossier www de WAMP
  • On ouvre le dossier avec VS Code
  • On démarre WAMP.
  • On charge la BD dans mysql, soit avec un client CLI (client mysql), soit avec un client GUI (PhpMyAdmin).
  • On ouvre la page localhost/home. On ouvre le dossier qu’on a chargé. On démarre par le fichier ctrl_accueil.php
  • On circule dans toutes les fonctionnalités de l’application.
  • On ouvre le code de l’application avec VS Code :
  • On regarde le fichier ctrl_accueil.php. On comprend l’architecture MVC. On regarde le modèle. On regarde la vue. Vous devez comprendre le fonctionnement. Vous pouvez répéter l’opération pour tous les controleurs.
  • Remplacez le menu film par CRUD film. Modifier le menu page3 : appelez-le "film post 2010" et faites en sorte qu’il affiche la liste des films d’après 2010.

  • TD 1 - 3 :
  • Installation de l’application 2 : à charger et à faire tourner -> ici
  • On met de dossier dans le dossier home du dossier www de WAMP
  • On ouvre le dossier avec VS Code
  • On démarre WAMP.
  • On charge la BD dans mysql, soit avec un client CLI (client mysql), soit avec un client GUI (PhpMyAdmin).
  • On ouvre la page localhost/home. On ouvre le dossier qu’on a chargé. On démarre par le fichier _index.php
  • On circule dans toutes les fonctionnalités de l’application.
  • On ouvre le code de l’application avec VS Code :
  • On regarde le fichier _index.php. On regarde le controleur auquel il amène. On comprend l’architecture MVC. On regarde le modèle. On regarde la vue. Vous devez comprendre le fonctionnement. Vous pouvez répéter l’opération pour tous les controleurs.
  • Ajoutez un menu qui permette d’afficher dans une page HTML du site le contenu de l’API qu’on envoie dans le menu API. Prenez exemple sur la façon de faire dans le 1er projet.
  • Recoder le premier projet de telle sorte que tous les controleurs soient dans un dossier ctrl.


  • Documents et code du jour (quand le cours est fini !) -> ici


  • J-2 Jeudi 31/10 : Prise en main d’un environnement de développement WAMP - PHP - MySQL


  • TD 1 - 1 :
  • Installation d’un environnement de travail WEB
  • Installer Chrome (ou Firefox) et SublimeText
  • Installer Visual Studio Code et les extensions pour PHP : PHPintelephense, PHP, intelliPHP, Prettier SQL VSCode. Raccourcis_VS_Code -> ici
  • Installer WAMP en le reliant à Chrome et SublimeText

  • TD 1 - 2 : on reprend le TD de la semaine dernière.
  • Installer le projet 1 dans WAMP
  • Regarder et comprendre l’architecture.
  • Faire les modifications demandées.

  • TD 1 - 3 : on reprend le TD de la semaine dernière.
  • Installer le projet 1 dans WAMP
  • Regarder et comprendre l’architecture.
  • Faire les modifications demandées.

  • Documents et code du jour (quand le cours est fini !) -> ici
  • A faire pour la prochaine fois :

  • Lire les documents associés aux TP qui sont dans les documents et code du jour.
  • Refaire les TP.
  • Regarder les corrigés (dans documents et code du jour).


  • J-3 Jeudi 7/11 : Cours et TD PHP Objet

  • Cours et TD PHP Objet -> ici
  • POO - Introduction : pp. 2-4-> ici
  • POO en PHP : les bases : pp. 5-10 -> ici
  • TP 1 -> ici
  • Auto load : p.11 -> ici
  • TP 2 -> ici
  • Attribut de classe, constante de classe, méthode magique : pp.12-16 -> ici
  • TP 3, 4, 5 et 6 p. 13, 15, 16 et 17
  • POO - Synthèse de syntaxe et autres exemples : pp.22-27 -> ici

  • Documents et code du jour (quand le cours est fini !) -> ici
  • A faire pour la prochaine fois :

  • Relire le cours : de la page 2 à la page 16.
  • Lire les documents associés aux TP qui sont dans les documents et code du jour.
  • Refaire les TP 1.
  • Faire les TP 2, 3, 4, 5.
  • Faire le TP qui est sur le tableau des docs et codes du jour.


  • J-4 Jeudi 14/11 : Cours et TD PHP Objet

  • Fin des TP 2, 3, 4, 5 : autoload, static, const, __to_string
  • TP du tableau livré dans les docs du jour
  • TP 6 : on fait le diagramme des classes avant de coder
  • PAS FAIT : TP 7 : on fait des tests unitaires à partir du TP 6
  • Tests unitaires : Cours et TD PHP Objet -> ici

  • Documents et code du jour (quand le cours est fini !) -> ici
  • A faire pour la prochaine fois :

  • Lire les documents associés aux TP qui sont dans les documents et code du jour.
  • Lire les corrigés des TP 1, 2, 3, 4, 5 et 6. Finir les votres !
  • Finir le TP qui est sur le tableau : on met un stock d’armes dans le personnage. On peut consulter son stock. Ajouter une arme dans le stock. Sélectionner une arme dans le stock. Changer son arme par une arme du stock.


  • J-5 Jeudi 21/11 : Cours et TD PHP Objet : Hydratation et CRUD

  • On commence par regarder le 1er exemple de code sur l’hydratation (chargez-le, faites le tourner, ouvrez le dans VS Code) : -> ici
  • Ensuite on peut regarder l’exemple 2 en s’appuyant sur le cours : faites le tourner, ouvrez le dans VS Code.
  • Puis l’exemple 3 en s’appuyant sur le cours : faites le tourner, ouvrez le dans VS Code.
  • Cours sur l’hydratation : p16 -> ici
  • Cours sur l’hydratation : p17 et suivantes -> ici
  • TP : pas fait
  • On va faire une page web avec un menu permettant l’accès aux pages
  • On se doter d’un dossier ctrls pour mettre tous nos controleur. Et on se dote d’un fichier _index.php qui démarre l’application
  • On va ajouter ce qu’on a fait dans les TP précédents avec personnages et armes : au minimum, le CRUD (au moins CR) des personnages.

  • Documents et code du jour (quand le cours est fini !) -> ici
  • A faire pour la prochaine fois :

  • Lire les documents et codes du jours. Il faut comprendre la logique de l’ORM = hydratation.


  • J-6 Jeudi 28/11 : TD PHP Objet : Hydratation et CRUD

  • TP : on fait le TP qui fait suite au cours de la semaine dernière. Vous pouvez faire ça sur les classes Personnages et Armes, ou faire ça sur un projet à vous.
  • TP Personnage et Arme :
  • On va faire une page web avec un menu permettant l’accès aux pages
  • On se doter d’un dossier ctrls pour mettre tous nos controleur. Et on se dote d’un fichier _index.php qui démarre l’application
  • On va ajouter ce qu’on a fait dans les TP précédents avec personnages et armes : au minimum, le CRUD (au moins CR) des personnages.
  • Détails du TP : -> ici

  • Documents et code du jour (quand le cours est fini !) -> ici
  • A faire pour la prochaine fois :

  • Lire les documents et codes du jours. Il faut comprendre la logique de l’architecture de base.
  • Finir le menu Personnages en gérant uniquement l’affichage des personnages : créer la BD, autoload des classes, écrire le modele_personnages.php.
  • Vous pouvez continuez ensuite le TP


  • J-7 Jeudi 5/12 : TD PHP Objet : Hydratation et CRUD

  • On continue le TP de la semaine dernière à partir des documents et code du jour de la semaine dernière :
  • On finit le menu Personnages qu’on renomme Select Personnage en gérant uniquement l’affichage des personnages : créer la BD, autoload des classes, écrire le modele_personnages.php.
  • On gère le menu Armes qu’on renomme Select Armes de la même façon par copier-coller de tout ce qu’on a fait pour les personnages (M-V-C) pour l’affichage des Armes.
  • Ensuite on gère l’ajout d’une arme à un personnage.
  • Ensuite on fait un menu CRUD pour les Personnages (au minimum CR).
  • Enfin, on fait la même chose pour les Armes avec un copier-coller.
  • Ce projet servira de base pour mettre en oeuvre la gestion des Sessions : on aura un compte public et un compte administrateur.
  • Le compte public donnera accès aux Select et à la possibilité de choisir une arme pour un personnage.
  • Le compte administrateur donnera accès à tout
  • Cours sur les Sessions en PHP -> ici
  • Exemples sur le chargement de fichier en PHP -> ici

  • Documents et code du jour (quand le cours est fini !) - première livraison -> ici


  • J-8 Jeudi 12/12 : Session et MVC-POO-ORM en PHP

  • Cours sur les Sessions en PHP -> ici
  • Intégration dans notre TP personnages-armes-POO-PHP
  • Outils pour le TP : -> ici
  • Sessions_FW_POO_ORM.txt liste les étapes à mettre en oeuvre dans votre projet : -> ici
  • TP_final_perso_arme-session est une version avec Session du projet
  • Application_hackathon est une application frameworké PHP POO MVC ORM avec production d’API, tests unitaires de classes métier, upload de fichiers et SESSION
  • Client_lourd_Hackathon est une application python qui utilise l’API de Application Hackathon
  • Le but est d’ajouter une gestion de session dans notre projet Personnage Arme
  • Vous pouvez suivre les étapes du fichier Sessions_FW_POO_ORM.txt
  • Vous pouvez regardez les codes dans Applications Hackathon et/ou dans TP_final_perso_arme-session

  • Documents et code du jour (quand le cours est fini !) - première livraison -> ici


  • J-9 Jeudi 19/12 : Session et MVC-POO-ORM en PHP

  • L’objectif est d’intégrer le code de SESSIONS PHP de la version "TP_final_perso_arme-session" dans la version J-8 : c’est ce qu’on commencé la semaine précédente
  • Dans la version J-8 on trouve :
  • L’application Hackathon qui suit le framework qu’on utilise pour notre TP. Il y l’application WEB et une application de Bureau en python qui récupère l’API de l’application WEB
  • La version finale de notre application frameworké avec session : TP_final_perso_arme-session.
  • La version de la semaine dernière de notre application frameworkée.
  • Les étapes à suivre pour le TP : elle sont aussi décrites ci-dessous.
  • L’objectif du TP est de partir de la version de la semaine dernière et d’y intégrer la gestion de SESSIONS pour arriver à la version finale
  • En faisant cet exercice, on se familiarise avec l’architecture frameworkée de notre application.
  • On suit plus ou moins les étapes décrites ci-dessous et dans le fichier Sessions_FW_POO_ORM.txt : -> ici
  • D’abord, on a remonté le dossier public à la racine
  • Ensuite, on a ajouté le CSS de TP_final dans J-8 pour avoir le menu "propre".
  • Ensuite, on a commencé à mettre à jour les nav : on a une première version avec uniquement le nav public, sans gestion de SESSION
  • On va ajouter le formulaire de connexion dans le nav_public
  • Ensuite, il va falloir pouvoir gérer les sessions :
  • On met à jour la BD
  • On met à jour le modèle pour Joueur et pour Administrateur
  • Ensuite on gère le contrôleur d’accueil : on gère les SESSIONS : on utilise le dossier "intialisations" de "TP_final" et on restructure le code pour que ça marche pour le contrôleur d’acceuil.
  • Enfin, on revient sur le nav pour gérer le swich (if else if) avec la SESSION. On vérifit que ça marche pour l’utilisateur public
  • On met à jour les nav_joueur et nav_administrateur si nécessaire. On vérifie que ça marche pour les utilisateurs joueur et administrateur
  • Enfin, on gère l’interdiction des accès à des utilisateurs sans droits

  • Documents et code du jour (quand le cours est fini !) - première livraison -> ici


  • Modalités d’examens

  • L’examen se fera sur papier, sans machine, sans téléphone, sans réseau, sans document, sans communication avec d’autres personnes.
  • L’examen portera sur l’architecture MVC avec POO et ORM.
  • Il s’appuie sur les exemples vus en cours.
  • On ne traite pas la gestion des Sessions pour l’examen.
  • Vous pouvez regarder la dernière livraison pour voir la dernière architecture MVC-POO-ORM sans Session. Attention, il n’y a pas d’Insert, Update, Delete mais il faut savoir en ajouter. Vous pouvez le faire pour vous entrainer. Vous pouvez vous entrainer sur Armes, les 2 CRUD et le changement d’arme.
  • Il faut savoir intégrer des codes avec Insert, Update de Delete dans un modèle MVC-POO-ORM.


  • X



    Sources et compléments de cours :

  • Cours et TD PHP Objet -> ici
  • Cours sur l’hydratation -> ici
  • Cours sur les Sessions en PHP -> ici
  • Exemples sur le chargement de fichier en PHP -> ici