Skip to content

barthofu/byecine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

byecine

Projet pour s'initier au PHP objet en MVC, réalisé pour un TP de PHP à l'IUT.

Utilisation

Le site est disponible publiquement Ă  l'adresse suivante : byecine.barthofu.com

Comment ça marche

Il s'agit d'une application MVC normale, composée de modèles, de vues et de contrôleurs.

  1. Tout d'abord, le script d'initialisation init.php est exécuté.
    • Le script d'initiation charge les scripts principaux et les fichiers de configuration.
  2. Ensuite, une nouvelle instance d'application est créée et l'url est analysée dans la classe Router.php (qui fait office de "FrontController").
  3. Une instance de contrôleur est créée et la méthode demandée est appelée.
  4. La méthode du contrôleur appelle récupère le modèle, parse les données, effectue toute la business logic nécessaire (même si une meilleure façon de faire serait de mettre toute la logique dans un layer supplémentaire "services" situé entre le contrôleur et le modèle, mais ce n'est pas forcément nécessaire pour un projet de petite envergure comme celui-ci).
  5. En fonction de la page à laquelle on veut accéder, une methode isLogged() sera appelée pour vérifier si l'utilisateur est connecté ainsi que son grade (user, admin, etc), et sera redirigé vers la page de login si ce n'est pas le cas.
  6. Enfin, la méthode du contrôleur appelle la méthode de la vue en passant en paramètres la liste des variables dont la vue aura besoin.

Petites précisions

  • Les URL sont rĂ©-Ă©crites par le .htaccess tel que : https://[host]/films/add -> https://[host]/public/index.php?req=films/add
  • Le routeur est basĂ© sur le système de fichier et l'arborescence
  • Une seule instance de connexion Ă  la base de donnĂ©e est créée au moment de l'initialisation du init.php, qui sera ensuite assignĂ©e Ă  l'attribut statique $_db de la classe Model.php
  • Nous avons dĂ©cidĂ© de rassembler les fonctionnalitĂ©s DTO et DAO de la partie model dans une seule et mĂŞme classe

Structure du dossier

bycine 
├── .htaccess # redirige toutes les requêtes vers public/index.php
├── public # dossier public, accessible à l'utilisateur 
│   ├─ index.php # fichier vers lequel toute requete est redirigée, et qui inclus le src/init.php
│   ├─ scripts # fichiers Javascript
│   ├─ styles # fichiers CSS
│   └─ assets # images, videos, sons, svg, etc 
└─ app
    ├─ init.php # charge toutes les classes / fonctions / variables nécessaires au bon fonctionnement de l'app
    ├─ config # variables de configuration
    ├─ controllers # contrôleurs
    ├─ core # classes (souvent mères) servant de coeur à l'application
    ├─ models # modèles
    ├─ utils # fonctions utilitaires
    └─ views # vues
        ├─ layout # éléments redondants aux pages (ex: header et footer)
        └─ templates # contenu des pages

Todo

  • Faire le mail avec :
    • Lien hebergĂ©
    • Lien du github
    • Logs du compte du prof (admin) et ceux du compte etu (user)
    • Instructions docker et .env en pièce jointe pour l'Ă©xecuter en local

About

🎥 University PHP Project to introduce us to a classic OOP MVC structure

Topics

Resources

Stars

Watchers

Forks

Languages