SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
UN EXEMPLE ÉLÉMENTAIRE
D’APPLICATION MVC EN PHP
KRISTEN LE LIBOUX
JUILLET 2013
Introduction
Une liste de choses à faire
Deux pages-types :
• Page d’accueil (liste des choses, cliquables)
• Détails d’une chose (nom, à faire avant le...)
3
Objectif
Concevoir une architecture pour ce site élémentaire
• Générique, réutilisable, extensible
• Avec le modèle de conception MVC :
Modèle -Vue - Contrôleur
• Et avec URL rewriting
4
Mockups : liste
5
TODO.COM
copyright...
A faire :
•Ranger les courses
•Faire le ménage
•Dormir
http://localhost/todolist
Mockups : détails
6
TODO.COM
copyright...
Ranger les courses :
A faire avant le
17/01/2013 11:00:00
Retour
http://localhost/todolist/item/ranger-courses
http://localhost/todolist/item.php?id=1
Rappels sur MVC
Modèle MVC
Principe de conception d’applications
basé sur la séparation de 3 fonctions essentielles
en composants distincts :
• Modèle : gérer les données
• Vue : gérer l’affichage, l’UI
• Contrôleur : agir
8
Modèle MVC en PHP
Modèle :
• Gère les échanges avec la BDD
• Une classe par entité de la BDD
(utilisateur, article, catégorie, produit, etc...)
• On peut utiliser un ORM (Doctrine, Propel) pour cela
9
Modèle MVC en PHP
Vue :
• Affichages HTML (parfois JSON si Ajax)
• On injecte des parties variables (provenant du
modèle par exemple) : détails d’un article, d’un
produit, etc
• On peut utiliser un moteur de templates
(Smarty,Twig)
10
Modèle MVC en PHP
Contrôleur :
• Implémente les actions
• Autant de classes que nécessaires, regroupées par
entités logiques (Articles, Utilisateurs, Produits,
Commande, etc...)
• Et aussi pour les erreurs (404, 403...)
• Chaque contrôleur a ses actions (lister, afficher,
insérer, éditer, supprimer, etc)
• Chaque contrôleur a ses vues associées
11
Modèle MVC en PHP
Noyau (kernel) : le chef d’orchestre
• Analyse la requête du client
• Instancie le contrôleur correspondant
• Exécute l’action
• Affiche la vue, etc.
12
Modèle MVC en PHP
Point d’entrée du site (unique, index.php) :
• Premier script appelé, quelle que soit la requête
• Initialise la configuration
• Appelle le noyau
Impose de configurer Apache, URL rewriting
13
Schéma récapitulatif (1/4)
Supposons que le client (internaute) appelle l’URL :
http://localhost/todolist/item/ranger-courses
• Il s’agit de l’URL de la page
« détails de l’élément "Ranger les courses" »
• Observons le processus côté serveur.
14
index.php?query=item/ranger-courses
point
d’entrée
Kernel::run()
$cont = new ItemController
	

 	

 	

 	

 ("ranger-courses");
$cont->display();
noyau
contrôleur
et action
modèle Item::find("ranger-courses");
$view = newView("item-details.html");
echo $view->render();vue
clienthttp://localhost/todolist/item/ranger-courses
réécriture
Schéma récapitulatif (3/4)
1. Le client requiert une URL http://.../item/ranger-courses
2. Redirection Apache vers index.php?query=item/ranger-courses
3. Exécution de index.php (point d’entrée unique) :
3.1. Initialisation de la configuration (ROOT, HOME)
3.2. Inclusion de «kernel.php» (classe statique)
3.3. Exécution du noyau avec Kernel::run()
16
Schéma récapitulatif (4/4)
3.3.1	

	

 Le noyau analyse la requête (fait appel à un routeur) :
	

 	

 	

 Contrôleur : 	

 ItemController
	

 	

 	

 Action : 	

 	

 	

 display
	

 	

 	

 Paramètres : 	

 slug = "ranger-courses"
3.3.2	

	

 Le noyau instancie ce contrôleur, lui passe les
	

 	

 	

 paramètres et exécute l’action :
	

 	

 	

 - Instanciation du modèle nécessaire (Item)
	

 	

 	

 - Recherche de l’élément correspondant au slug
	

 	

 	

 - Génération de la vue et envoi au client
17
Pourquoi une telle complexité ?
Modularité
• Facilite la coopération de différents développeurs
• Les fichiers HTML sont le moins modifiés possible par
rapport aux livraisons de l’intégrateur
Fiabilité et maintenabilité
• Chaque classe fait peu de choses, mais le fait parfaitement
• Ou sinon, c’est facile de localiser les erreurs
• Le code est factorisé, jamais dupliqué
Extensibilité
• Ajouter une action ou une fonctionnalité entière est facile
18
Architecture des
répertoires
www/
• .htaccess
• index.php
• css, images, js, etc
(aucun ici...)
Répertoires et fichiers à créer
app/
• kernel/
• controller/
• model/
• view/
20
app/controller/
• IndexController
• ItemController
app/model/
• Item
Classes à créer
app/kernel/
• Kernel
• Controller
• Model
• View
• Router
• Database
21
Vues à créer
En général on crée une vue par action.
Ici il y a deux contrôleurs avec action «display»
app/view/
• index/display.html
• item/display.html
• error/404.html
22
Discussion
Extensions possibles
1. 	

Plusieurs modèles de vues : système de thèmes
2.	

Vues modulables (header, footer, sidebar, etc)
3. 	

Présence d’un back- et d’un front-office :
	

 Il faut identifier les éléments communs ou spécifiques
4.	

Notion de session (droits d’accès)
5.	

Routeur plus élaboré (expressions régulières,
extraction automatisée des paramètres)
6. Gestion des formulaires
24
Télécharger les sources
25
https://github.com/kleliboux/code-samples
MERCI
@NOVLANGUE SUR TWITTER
COMMENTAIRES, DISCUSSIONS, QUESTIONS

Contenu connexe

Tendances

Angular Framework présentation PPT LIGHT
Angular Framework présentation PPT LIGHTAngular Framework présentation PPT LIGHT
Angular Framework présentation PPT LIGHTtayebbousfiha1
 
Projet de fin d'etude sur le parc informatique
Projet  de fin d'etude sur le parc informatiqueProjet  de fin d'etude sur le parc informatique
Projet de fin d'etude sur le parc informatiqueHicham Ben
 
gestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiquegestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiqueOussama Yoshiki
 
Célèbres pannes du génie logiciel
Célèbres pannes du génie logicielCélèbres pannes du génie logiciel
Célèbres pannes du génie logicielNassim Bahri
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPierre Faure
 
Introduction aux architectures des SI
Introduction aux architectures des SI Introduction aux architectures des SI
Introduction aux architectures des SI Heithem Abbes
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correctionInes Ouaz
 
Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionLilia Sfaxi
 
Examen principal - PHP
Examen principal - PHPExamen principal - PHP
Examen principal - PHPInes Ouaz
 
Méthodologie 2 Track Unified Process
Méthodologie 2 Track Unified ProcessMéthodologie 2 Track Unified Process
Méthodologie 2 Track Unified ProcessZakaria Bouazza
 
Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Ayoub Mkharbach
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELLilia Sfaxi
 
Cours développement côté serveur
Cours développement côté serveurCours développement côté serveur
Cours développement côté serveurHouda TOUKABRI
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel phpKhadim Mbacké
 

Tendances (20)

Angular Framework présentation PPT LIGHT
Angular Framework présentation PPT LIGHTAngular Framework présentation PPT LIGHT
Angular Framework présentation PPT LIGHT
 
Projet de fin d'etude sur le parc informatique
Projet  de fin d'etude sur le parc informatiqueProjet  de fin d'etude sur le parc informatique
Projet de fin d'etude sur le parc informatique
 
gestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiquegestion de magasin vente matériels informatique
gestion de magasin vente matériels informatique
 
Célèbres pannes du génie logiciel
Célèbres pannes du génie logicielCélèbres pannes du génie logiciel
Célèbres pannes du génie logiciel
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVC
 
Introduction aux architectures des SI
Introduction aux architectures des SI Introduction aux architectures des SI
Introduction aux architectures des SI
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
 
Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de Conception
 
Examen principal - PHP
Examen principal - PHPExamen principal - PHP
Examen principal - PHP
 
E-learning
E-learningE-learning
E-learning
 
Méthodologie 2 Track Unified Process
Méthodologie 2 Track Unified ProcessMéthodologie 2 Track Unified Process
Méthodologie 2 Track Unified Process
 
Cours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 compositeCours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 composite
 
Cours uml
Cours umlCours uml
Cours uml
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Angular Avancé
Angular AvancéAngular Avancé
Angular Avancé
 
Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPEL
 
Cours développement côté serveur
Cours développement côté serveurCours développement côté serveur
Cours développement côté serveur
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel php
 

Similaire à Un exemple élémentaire d'application MVC en PHP

#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniterAtsé François-Xavier KOBON
 
Café Numérique Arlon S03#02: Je code mon blog (EU code week Arlon)
Café Numérique Arlon S03#02: Je code mon blog (EU code week Arlon)Café Numérique Arlon S03#02: Je code mon blog (EU code week Arlon)
Café Numérique Arlon S03#02: Je code mon blog (EU code week Arlon)Café Numérique Arlon
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
 
Play Framework
Play FrameworkPlay Framework
Play FrameworkArmaklan
 
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursHoracio Gonzalez
 
Cours yeoman backbone box2d
Cours yeoman backbone box2dCours yeoman backbone box2d
Cours yeoman backbone box2dhugomallet
 
Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Laurent Guérin
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Nazih Heni
 
03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA 03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA Cellenza
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPJean-Marc Fontaine
 
Nuxt.js et les applications isomorphiques (Universelles/SSR)
Nuxt.js et les applications isomorphiques (Universelles/SSR)Nuxt.js et les applications isomorphiques (Universelles/SSR)
Nuxt.js et les applications isomorphiques (Universelles/SSR)Joffrey LEVEUGLE
 
[Webinar] Techniques avancées de création de workflow - FR
[Webinar] Techniques avancées de création de workflow - FR[Webinar] Techniques avancées de création de workflow - FR
[Webinar] Techniques avancées de création de workflow - FRNuxeo
 
Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Nazih Heni
 
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo LarcherConférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo LarcherNormandie Web Xperts
 
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...Alphorm
 

Similaire à Un exemple élémentaire d'application MVC en PHP (20)

#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
 
Café Numérique Arlon S03#02: Je code mon blog (EU code week Arlon)
Café Numérique Arlon S03#02: Je code mon blog (EU code week Arlon)Café Numérique Arlon S03#02: Je code mon blog (EU code week Arlon)
Café Numérique Arlon S03#02: Je code mon blog (EU code week Arlon)
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
Rails 3 au Djangocong
Rails 3 au DjangocongRails 3 au Djangocong
Rails 3 au Djangocong
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
 
Cours yeoman backbone box2d
Cours yeoman backbone box2dCours yeoman backbone box2d
Cours yeoman backbone box2d
 
Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0
 
Java Server Faces 2
Java Server Faces 2Java Server Faces 2
Java Server Faces 2
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"
 
03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA 03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHP
 
Nuxt.js et les applications isomorphiques (Universelles/SSR)
Nuxt.js et les applications isomorphiques (Universelles/SSR)Nuxt.js et les applications isomorphiques (Universelles/SSR)
Nuxt.js et les applications isomorphiques (Universelles/SSR)
 
[Webinar] Techniques avancées de création de workflow - FR
[Webinar] Techniques avancées de création de workflow - FR[Webinar] Techniques avancées de création de workflow - FR
[Webinar] Techniques avancées de création de workflow - FR
 
Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"
 
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo LarcherConférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
 
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
 
Framework php « Codeignitor »
Framework php « Codeignitor » Framework php « Codeignitor »
Framework php « Codeignitor »
 

Un exemple élémentaire d'application MVC en PHP

  • 1. UN EXEMPLE ÉLÉMENTAIRE D’APPLICATION MVC EN PHP KRISTEN LE LIBOUX JUILLET 2013
  • 3. Une liste de choses à faire Deux pages-types : • Page d’accueil (liste des choses, cliquables) • Détails d’une chose (nom, à faire avant le...) 3
  • 4. Objectif Concevoir une architecture pour ce site élémentaire • Générique, réutilisable, extensible • Avec le modèle de conception MVC : Modèle -Vue - Contrôleur • Et avec URL rewriting 4
  • 5. Mockups : liste 5 TODO.COM copyright... A faire : •Ranger les courses •Faire le ménage •Dormir http://localhost/todolist
  • 6. Mockups : détails 6 TODO.COM copyright... Ranger les courses : A faire avant le 17/01/2013 11:00:00 Retour http://localhost/todolist/item/ranger-courses http://localhost/todolist/item.php?id=1
  • 8. Modèle MVC Principe de conception d’applications basé sur la séparation de 3 fonctions essentielles en composants distincts : • Modèle : gérer les données • Vue : gérer l’affichage, l’UI • Contrôleur : agir 8
  • 9. Modèle MVC en PHP Modèle : • Gère les échanges avec la BDD • Une classe par entité de la BDD (utilisateur, article, catégorie, produit, etc...) • On peut utiliser un ORM (Doctrine, Propel) pour cela 9
  • 10. Modèle MVC en PHP Vue : • Affichages HTML (parfois JSON si Ajax) • On injecte des parties variables (provenant du modèle par exemple) : détails d’un article, d’un produit, etc • On peut utiliser un moteur de templates (Smarty,Twig) 10
  • 11. Modèle MVC en PHP Contrôleur : • Implémente les actions • Autant de classes que nécessaires, regroupées par entités logiques (Articles, Utilisateurs, Produits, Commande, etc...) • Et aussi pour les erreurs (404, 403...) • Chaque contrôleur a ses actions (lister, afficher, insérer, éditer, supprimer, etc) • Chaque contrôleur a ses vues associées 11
  • 12. Modèle MVC en PHP Noyau (kernel) : le chef d’orchestre • Analyse la requête du client • Instancie le contrôleur correspondant • Exécute l’action • Affiche la vue, etc. 12
  • 13. Modèle MVC en PHP Point d’entrée du site (unique, index.php) : • Premier script appelé, quelle que soit la requête • Initialise la configuration • Appelle le noyau Impose de configurer Apache, URL rewriting 13
  • 14. Schéma récapitulatif (1/4) Supposons que le client (internaute) appelle l’URL : http://localhost/todolist/item/ranger-courses • Il s’agit de l’URL de la page « détails de l’élément "Ranger les courses" » • Observons le processus côté serveur. 14
  • 15. index.php?query=item/ranger-courses point d’entrée Kernel::run() $cont = new ItemController ("ranger-courses"); $cont->display(); noyau contrôleur et action modèle Item::find("ranger-courses"); $view = newView("item-details.html"); echo $view->render();vue clienthttp://localhost/todolist/item/ranger-courses réécriture
  • 16. Schéma récapitulatif (3/4) 1. Le client requiert une URL http://.../item/ranger-courses 2. Redirection Apache vers index.php?query=item/ranger-courses 3. Exécution de index.php (point d’entrée unique) : 3.1. Initialisation de la configuration (ROOT, HOME) 3.2. Inclusion de «kernel.php» (classe statique) 3.3. Exécution du noyau avec Kernel::run() 16
  • 17. Schéma récapitulatif (4/4) 3.3.1 Le noyau analyse la requête (fait appel à un routeur) : Contrôleur : ItemController Action : display Paramètres : slug = "ranger-courses" 3.3.2 Le noyau instancie ce contrôleur, lui passe les paramètres et exécute l’action : - Instanciation du modèle nécessaire (Item) - Recherche de l’élément correspondant au slug - Génération de la vue et envoi au client 17
  • 18. Pourquoi une telle complexité ? Modularité • Facilite la coopération de différents développeurs • Les fichiers HTML sont le moins modifiés possible par rapport aux livraisons de l’intégrateur Fiabilité et maintenabilité • Chaque classe fait peu de choses, mais le fait parfaitement • Ou sinon, c’est facile de localiser les erreurs • Le code est factorisé, jamais dupliqué Extensibilité • Ajouter une action ou une fonctionnalité entière est facile 18
  • 20. www/ • .htaccess • index.php • css, images, js, etc (aucun ici...) Répertoires et fichiers à créer app/ • kernel/ • controller/ • model/ • view/ 20
  • 21. app/controller/ • IndexController • ItemController app/model/ • Item Classes à créer app/kernel/ • Kernel • Controller • Model • View • Router • Database 21
  • 22. Vues à créer En général on crée une vue par action. Ici il y a deux contrôleurs avec action «display» app/view/ • index/display.html • item/display.html • error/404.html 22
  • 24. Extensions possibles 1. Plusieurs modèles de vues : système de thèmes 2. Vues modulables (header, footer, sidebar, etc) 3. Présence d’un back- et d’un front-office : Il faut identifier les éléments communs ou spécifiques 4. Notion de session (droits d’accès) 5. Routeur plus élaboré (expressions régulières, extraction automatisée des paramètres) 6. Gestion des formulaires 24