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.
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