Skip to content
Philippe Beck edited this page Feb 13, 2020 · 6 revisions

Procédure de construction du projet PHP-MVC


Init Project

Create .gitignore

  • Créez un fichier .gitignore à la racine
  • Renseignez les noms des dossiers & des fichiers que l'on ne souhaite pas commiter avec Git
  • Doc
  • Exemple

Create composer.json

  • Créez un fichier composer.json à la racine
  • Renseignez les informations importantes tel que le nom du projet, la version, l'autoload & les dépendances PHP
  • Doc
  • Exemple

Add composer.lock

  • Ouvrez le terminal à la racine
  • Tapez composer install
  • Cela installera les dépendances PHP dans le dossier /vendor/, produira les fichiers composer.lock & autoload.php
  • Doc

Create package.json

  • Créez un fichier package.json dans le dossier /public/
  • Renseignez les informations importantes tel que le nom du projet & les dépendances Frontend
  • Doc
  • Exemple

Add package-lock.json

  • Ouvrez le terminal dans le dossier /public/
  • Tapez npm install
  • Cela installera les dépendances Frontend dans le dossier /public/nodes_modules/ & produira le fichier package-lock.json
  • Doc

Init Controller

Create Router.php

  • Créez un fichier Router.php dans le dossier /src/
  • La classe Router doit gérer les routes vers toutes les méthodes de tous les contrôleurs
  • Exemple

Create index.php

  • Créez un fichier index.php dans le dossier /public/
  • L'index est le point d'entrée de l'application, sera visible de l'extérieur & ne doit contenir que le strict minimum de logique
  • Exemple

Create MainController.php

  • Créez un fichier MainController.php dans le dossier /src/Controller/
  • La classe MainController doit gérer tous les besoins recurrants sur l'ensemble de l'application
  • Exemple

Create HomeController.php

  • Créez un fichier HomeController.php dans le dossier /src/Controller/
  • La classe HomeController doit gérer tous les besoins de la page home de l'application

Create home.twig

  • Créez un fichier home.twig dans le dossier /src/View/
  • La vue home doit afficher tous les éléments que l'on souhaite disponibles à l'accueil de l'application

Init Model

Create db.sql

  • Créez un fichier db.sql dans le dossier /config/
  • La création de la BDD, des tables & l'insertion des données se fait via l'import de ce fichier dans PhpMyAdmin
  • Exemple

Create db.php

  • Créez un fichier db.php dans le dossier /config/
  • L'accès à la BDD se fait grâce aux Contantes Globales définies dans ce fichier
  • Exemple

Create PdoFactory.php

  • Créez un fichier PdoFactory.php dans le dossier /src/Model/Factory/
  • Crée la connexion à SQL via PDO si elle n'existe pas & renvoie PDO
  • Exemple

Create PdoDb.php

  • Créez un fichier PdoDb.php dans le dossier /src/Model/
  • Prépare les requêtes requises en paramètres, les exécute & renvoie un résultat
  • Exemple

Create ModelFactory.php

  • Créez un fichier ModelFactory.php dans le dossier /src/Model/Factory/
  • Crée le Model s'il n'existe pas & le renvoie
  • Exemple

Create MainModel.php

  • Créez un fichier MainModel.php dans le dossier /src/Model/
  • La classe MainModel est abstraite & doit être héritée par toutes les modèles de l'application
  • Cette classe mère crée les requêtes CRUD pour l'ensemble de l'application
  • Exemple

Create UserModel.php

  • Créez un fichier UserModel.php dans le dossier /src/Model/
  • La classe UserModel gère les requêtes vers la BDD pour la table User
  • L'absence de méthode dans son corps se justifie par l'utilisation de l'héritage de la classe MainModel
  • Exemple

Update HomeController to get Users Datas

  • Modifiez le fichier HomeController.php
  • L'ajout d'un appel au modèle UserModel via le ModelFactory pour lister les données est nécessaire pour récupérer les informations
  • L'ajout d'un argument supplémentaire (pour renvoyer une variable contenant les données des utilisateurs sous forme de tableau) est alors possible pour permettre l'accès à ces données depuis la vue home

Udpate home.twig to use Users Datas

  • Modifiez le fichier home.twig afin d'utiliser les données récupérées depuis la BDD
  • L'ajout d'une structure HTML pour accueillir une seconde partie est préférable
  • L'ajout dans cette seconde partie d'une boucle sur le tableau récupéré permet d'en afficher le contenu utilisateur par utilisateur

Init View

Create navbar.twig to include it

  • Créez un fichier navbar.twig dans le dossier /src/View/layout/
  • La création d'un fichier dont la balise principale est une balise & contenant uniquement le code HTML de la navbar permet de l'inclure dans le layout grâce à la fonction Twig include()
  • Exemple

Create footer.twig to include it

  • Créez un fichier footer.twig dans le dossier /src/View/layout/
  • La création d'un fichier dont la balise principale est une balise & contenant uniquement le code HTML du footer permet de l'inclure dans le layout grâce à la fonction Twig include()
  • Exemple

Create style.css

  • Créez un fichier style.css dans le dossier /public/css/
  • Ce fichier CSS contient le code CSS personnalisé de l'application
  • Exemple

Create script.js

  • Créez un fichier script.js dans le dossier /public/js/
  • Ce fichier JS contient le code JS personnalisé de l'application
  • Exemple

Create layout.twig & link the previous files

  • Créez un fichier layout.twig dans le dossier /src/View/layout/
  • Ce fichier contient la structure principale de toutes les vues & appelle grâce à la fonction block() les informations spécifiques de chaque vue
  • Exemple

Update home.twig to implement the layout

  • Modifiez le fichier home.twig afin d'intégrer le layout
  • L'intégration du layout se fait en appelant le layout avec le mot clef extends, puis en définissant les blocks de données à intégrer avec la fonction block()
  • Exemple

Init App

Connect to Dependabot, Codacy & Code Climate

  • Connectez le projet à Dependabot, Codacy & Code Climate
  • Les liaisons à ces outils permettent une gestion automatique des dépendances du projet, ainsi que de la qualité & de la maintenabilité de son code
  • Dependabot
  • Codacy
  • Code Climate

Create README.md

  • Modifiez le fichier README.md
  • Ce fichier contient les informations principales du projet : sa description, sa procédure d'installation, ses liens, ses badges, etc...
  • Exemple

Fix Code to get good Badges

  • Effectuez les corrections possibles concernant les issues présentées par les outils
  • Un badge permet de voir en temps réel le niveau de qualité & de maintenabilité du projet