PHP MVC Merci de vous installer par binôme de niveau différent ➢ Structure de c

PHP MVC Merci de vous installer par binôme de niveau différent ➢ Structure de code professionnel Objectif ➢ Structure de code professionnel ➢ Modulaire: découpé en de nombreux fichiers où chaque fichier à un et un seul rôle ➢ D é c o u p l é : c h a q u e f i c h i e r f o n c t i o n n e indépendamment ➢ Documenté: commentaires placés sur les classes et les méthodes, fichier readme. possibilité de générer automatiquement ce fichier avec phpdoc. expliquer le pourquoi, pas le comment ➢ Simple: utiliser seulement le niveau de complexité / abstraction necessaire ➢ Anglais: langue des devs Objectif ➢ Réutilisable: un travail bien effectué peut souvent resservir dans d’autres projets ➢ Partageable: les fichiers étant indépendant, on peut travailler à plusieurs dessus ➢ Évolutif: apte au changement, il est facile d’ajouter de nouvelles fonctionnalités en gardant un code bien organisé Avantages ➢ On va déplacer des morceaux de code dans de nouveaux fichiers ➢ On va renommer certaines fonctions (en anglais) Concrètement ➢ Faire un code qui marche (c’est ce qu’on a fait jusqu’ici) ➢ Faire un code modulaire (c’est ce qu’on va faire aujourd’hui) ➢ Utiliser un framework: symfony, zend, votre propre framework (à vous d’aller plus loin en fonction de vos intérêts et des besoins du marché du travail) Les étapes ➢ Attention à ne pas le faire à l’envers. Souvent on utilise un framework parce que c’est la mode ou parce qu’on nous l’impose. Or, il faut avoir compris pourquoi on a besoin de ce framework pour comprendre tout son sens. Ainsi, vous ne serez pas perdu dans l’architecture souvent complexe de ces frameworks. Les étapes ➢ Importez la base de donnée mise à disposition ➢ Affichez ces 2 articles dans une page ➢ de la façon la plus simple possible Exercices ➢ Certe le code fonctionne. Cependant, lorsque vous allez vouloir ajouter des fonctionnalités, le fichier va grossir et faire plusieurs centaines de ligne. ➢ Ca continueras à fonctionner. ➢ Ca ne sera pas forcément plus lent. ➢ Cependant le code ne sera pas intelligible. - Lorsque vous allez le reprendre quelques semaines plus tard, il vous semblera trop compliqué et vous allez être découragé. - Encore pire, imaginez une personne extérieur qui tente de comprendre votre code: il va vous détester Analyse Analyse ➢ 1: langue du code: utiliser l’anglais pour le code PHP. Le code affiché à l’utilisateur reste lui en français. ➢ 2: commentaires: faire des commentaires orientés « objectif » ➢ 3: modularité du code: tout est dans un seul fichier. Séparer le HTML, CSS et PHP A améliorer ➢ Séparez dans le php le code qui permet de récupérer les données de celle qui permet de les afficher, dans le même fichier ➢ Sortez le CSS dans un fichier externe Exo v2 ➢ Séparez en 2 fichiers: ➢ index.php (il y a toujours un index.php, c'est le fichier de base de votre site lu en premier) : il s'occupera de récupérer les données et d'appeler l’affichage. ➢ affichageAccueil.php : il affichera les données dans la page. ➢Vous venez de faire ce qu’on appelle de la refactorisation Exo v3 ➢ Séparez complètement l'accès aux données (tout le traitement SQL) dans un fichier spécifique: ⁃ modele.php : se connecte à la base de données et récupère les billets via une fonction getBillets ⁃ affichageAccueil.php : affiche la page. Ce fichier ne va pas changer du tout. ⁃ index.php : fait le lien entre le modèle et l’affichage ➢ Nous venons de faire du MVC (Modele, Vue, Contrôleur) Exo v4 Architecture MVC Architecture MVC ➢ On charge le fichier du modèle. Il ne se passe rien pour l'instant, parce qu'il ne contient qu'une fonction. ➢ On appelle la fonction, ce qui exécute le code à l'intérieur de modele.php . On y récupère la liste des billets dans la variable $req. ➢ On charge le fichier de la vue (l'affichage), qui va présenter les informations dans une page HTML. Description de la correction ➢ MVC est un design pattern (bonne pratique de développement) ➢ Le pattern MVC permet de bien organiser son code source. Il va vous aider à savoir quels fichiers créer, mais surtout à définir leur rôle. Le but de MVC est justement de séparer la logique du code en trois parties que l'on retrouve dans des fichiers distincts. MVC, un design pattern ➢ Modèle : cette partie gère les données de votre site. Son rôle est d'aller récupérer les informations « brutes » dans la base de données, de les organiser et de les assembler pour qu'elles puissent ensuite être traitées par le contrôleur. On y trouve donc entre autres les requêtes SQL. ➢ Vue : cette partie se concentre sur l'affichage. Elle ne fait presque aucun calcul et se contente de récupérer des variables pour savoir ce qu'elle doit afficher. On y trouve essentiellement du code HTML mais aussi quelques boucles et conditions PHP très simples, pour afficher par exemple une liste de messages. L’architecture MVC: MV ➢ Contrôleur : cette partie gère la logique du code qui prend des décisions. C'est en quelque sorte l'intermédiaire entre le modèle et la vue : le contrôleur va demander au modèle les données, les analyser, prendre des décisions et renvoyer le texte à afficher à la vue. Le contrôleur contient exclusivement du PHP. C'est notamment lui qui détermine si le visiteur a le droit de voir la page ou non (gestion des droits d’accès). L’architecture MVC: C ➢ Contrôleur : Le contrôleur est le chef d’orchestre. Exemple 1: il reçoit une requête index.php: il va alors se charger de renvoyer tout les articles Exemple 2: il reçoit une requête index.php?page2: il va alors se charger de renvoyer seulement les articles 10 à 20. Si il y a des autorisations d’accès (exemple: la page admin ne doit être accessible qu’à une personne logée avec un statut « admin »), c’est également le contrôleur qui s’en charge. L’architecture MVC: C ➢ Voici ce que nous allons améliorer : ➢ L’anglais: les fonctions, la BDD et le code en général (sauf bien sur au texte français que nous ajoutons à l’écran) doivent être en anglais ➢ La balise de fermeture PHP: Les fichiers contenant uniquement du php n’ont plus de « ?> » à la fin (norme PSR-2) ➢ L'utilisation de short open tags <?php echo htmlspecialchars($data['title']); ?> deviendra <?= htmlspecialchars($data['title']) ?> ➢ L’indentation Exo v5 ➢ L'affichage (aussi appelé "vue" ou "view" en anglais) contient uniquement du code en anglais ( $donnees est devenu $data par exemple). Le code est un peu mieux indenté : on décale toujours d'un cran vers la droite le code à l'intérieur d'une balise. Le décalage se fait toujours en ajoutant 4 espaces à chaque fois qu'on veut décaler. Correction: ➢ Les articles ne s’affichent pas. Pourquoi? Problème ➢ Regardez la base de donnée Solution ➢ Pour le moment, on ne voit pas un grand intérêt à avoir ajouter autant de complexité au projet. C’est lorsque le projet va grandir que l’on va s’en rendre compte. ➢ C’est le but de la suite où nous allons ajouter un système de commentaires et voir ainsi que notre code est plus clair que si nous étions resté sur la création d’un simple « code qui marche » sur une page. Retour sur les étapes ➢ On voudrait un système qui prenne en paramètre un identifiant d’article et qui affiche cet article et en dessous ses commentaires ➢ Que devons nous mettre à jour? ➢ Comment s’y prendre? Création des commentaires ➢ On voudrait un système qui prenne en paramètre un identifiant d’article (ex: index.php?id=2) et qui affiche cet article et en dessous ses commentaires ➢ Que devons nous mettre à jour? ➢ Il faut mettre à jour aussi bien le Modèle, la Vue que le Contrôleur ➢ Comment s’y prendre? ➢ On commence généralement par le Modèle et d’abord la base de donnée sur laquelle elle va travailler ➢ Note pour plus tard: c’est pour cela qu’on démarre généralement de l’UML / MCD Création des commentaires ➢ Création du nécessaire en base de donnée pour accueillir les commentaires ➢ 1. Que créer ? ➢ 2. Quoi y mettre ? ➢ 3. Ou le faire? ➢ LETS’GO ! Commentaires Exo 1 ➢ On continue à créer le modèle en mettant cette fois à jour la page model.php ➢ 1. Elle doit contenir la récupération d’un post et la récupération de ses commentaires ➢ 2. Elle ne doit pas répéter de code Création des commentaires ➢ Créez les fonctions qui: ➢ récupère un post en fonction d’un id passé en GET. ➢ 1. Où va d’abord se placer l’id dans le code? ➢ qui récupère un commentaire en fonction d’un id passé en GET Commentaires Exo 2 ➢ On continue à créer le modèle en mettant cette fois à jour la page model.php ➢ 1. Elle doit contenir la récupération d’un post et la récupération de ses uploads/S4/ merci-de-vous-installer-par-binome-de-niveau-different-php-mvc 1 .pdf

  • 24
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Dec 23, 2022
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.9586MB