Cette architecture est utilisée dans Flex, Symfony, CakePHP, CodeIgniter, Zend, etc.

Documents pareils
SYSTÈMES D INFORMATIONS

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Devenez un véritable développeur web en 3 mois!

Gestion d identités PSL Exploitation IdP Authentic

Présentation du Framework BootstrapTwitter

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

TP JAVASCRIPT OMI4 TP5 SRC

OMGL6 Dossier de Spécifications

Suppositions du tutoriel

Initiation à html et à la création d'un site web

les techniques d'extraction, les formulaires et intégration dans un site WEB

Groupe Eyrolles, 2003, ISBN : X

25 mars. Tutoriel sur Laravel. Préparé par : Lydiane Beaulne-Bélisle. Ceci est un tutorial qui montre comment débuter avec le Framework PHP Laravel.

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Pack Fifty+ Normes Techniques 2013

FTP : File TRansfer Protocol => permets d envoyer des gros fichiers sur un serveur (ou de télécharger depuis le serveur)

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

TP1 : Initiation à Java et Eclipse

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

Préparation d un serveur Apache pour Zend Framework

Panel des technologies Web

Mise à jour d avast! et de vos logiciels Ciel

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Nuxeo 5.4 : les nouveautés

Installation de Premium-RH

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Créer une connexion entre Sage CRM et Sage Etendue pour émettre directement des devis et commandes

Démonstration de la mise en cache via HTML 5 sur iphone

TP 5 Les CMS, la forme et le fond Internet et Outils (IO2)

Présentation et références de la société

PHP 5.4 Développez un site web dynamique et interactif

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Formation Webmaster : Création de site Web Initiation + Approfondissement

Master1 ère année. Réseaux avancés I. TP nº5 filière ISICG

FORMATION / CREATION DE SITE WEB / 4 JOURNEES Sessions Octobre 2006

Comment développer et intégrer un module à PhpMyLab?

Normes techniques 2011

Installation locale de JOOMLA SEPIA

Introduction aux concepts d ez Publish

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Dans l'article précédent, vous avez appris

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Drupal (V7) : principes et petite expérience

Intranet d'établissement avec Eva-web Installation configuration sur serveur 2000 ou 2003 Document pour les administrateurs

Les Bases. Messaoudi Khaled, Boukelal Hanane (Etudiants Informatique ) 2015.

Guide de réalisation d une campagne marketing

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

Manuel du composant CKForms Version 1.3.2

Sommaire. Préface 1 : Pourquoi choisir Magento? Chapitre 1 : Magento, quésaco? Chapitre 2 : Quoi sous le capot?

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É PHP. 27 ans - 6 ans d'expérience

Drupal Développeur. Theming et développement pour Drupal. Une formation Formateur : Fabien Crépin. Drupal Développeur.

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

.. CSS. Damien Nouvel. Damien Nouvel (Inalco) CSS 1 / 15

Installation d OpenVPN

Karim EL KHALIFA Web developer

contact@nqicorp.com - Web :

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Projet en nouvelles technologies de l information et de la communication

MANUEL WORDPRESS. Objectif: Refonte d un site web sous Wordpress I PRE-REQUIS: 1 / Créer un backup (sauvegarde) du site:

Thème : Création, Hébergement et référencement d un site Web

Architectures web/bases de données

Formation : WEbMaster

Utiliser un CMS: Wordpress

Petite définition : Présentation :

CERTIFICAT INFORMATIQUE ET INTERNET NIVEAU 1

INGÉNIEUR - DÉVELOPPEUR SENIOR PHP. 28 ans - 8 ans d'expérience

Nouveautés de Drupal 8. Léon

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Les frameworks au coeur des applications web

Bonnes pratiques de développement JavaScript

Documentation technique

1 ère Université WEB. Courbevoie Samedi 21 octobre Votre site interactif sur internet.

Hébergement WeboCube. Un système performant et sécurisé. Hébergement géré par une équipe de techniciens

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Rapport de stage Clément MOYSAN

Manuel d'installation de GESLAB Client Lourd

Programme ASI Développeur

RESPONSIVE DESIGN : Comment offrir à vos sites une adaptabilité parfaite?

GOOGLE ANALYTICS. Ajout du code de suivi sur PowerBoutique. Ajout du code de suivi Google Analytics. Page 1 / 7 TUTO / GOOGLE ANALYTICS

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

HTML. Notions générales

TP1 : Initiation à Java et Eclipse

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

CASE-LINUX MAIL - ROUNDCUBE

MANUEL D INSTALLATION du module Chronopost pour. version 1.0.5

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

Transcription:

Le Modèle-Vue-Contrôleur (en abrégé MVC, de l'anglais Model-View-Controller) est une architecture et une méthode de conception qui organise la conception d un site web. Cette organisation divise le travail (programmation) en un modèle (modèle de données, script de référence), une vue (présentation, interface utilisateur, HTML) et un contrôleur (logique de contrôle, programmation central, validation). Imposer la séparation de notre code suivant un modèle standard permet aux programmeurs de se retrouver facilement dans le code et d imposer un standard dans la nomenclature et le style de programmation. Ceci permet entre autre d éviter de chercher plusieurs heures dans un code programmer par un autre employé. Cette architecture est utilisée dans Flex, Symfony, CakePHP, CodeIgniter, Zend, etc.

Le modèle représente le comportement de l'application : traitements des données, interactions avec la base de données, etc. Il assure la gestion de ces données et garantit leur intégrité. Dans le cas typique d'une base de données, c'est le modèle qui la contient. Le modèle offre des méthodes pour mettre à jour ces données (insertion, suppression, changement de valeur). Il offre aussi des méthodes pour récupérer ces données. Les résultats renvoyés par le modèle sont dénués de toute présentation. Les modèles sont encore peut exploiter dans nos projets, notamment à cause de la simplicité de ceux-ci. Le développement des modèles exige également plus de temps de développement à notre stade mais permet d accélérer la manipulation d une table dans une base de données. Ceci peut être très utile s il est possible de gérer le même élément à plusieurs endroits. Nous plaçons également dans le modèle des scripts génériques (nettoyeur de nom de fichier, calculateur, etc) qui peuvent être appelé par les contrôleurs pour simplifier le code. La vue correspond à l'interface avec laquelle l'utilisateur interagit. Sa première tâche est de présenter les résultats renvoyés par le contrôleur. Sa seconde tâche est de recevoir toutes les actions de l'utilisateur (clic de souris, sélection d'une entrée, boutons ). Ces différents événements sont envoyés au contrôleur. La vue n'effectue aucun traitement, elle se contente d'afficher les résultats des traitements. Bref, c est généralement du contenu HTML. Le contrôleur prend en charge la gestion des événements de synchronisation pour mettre à jour la vue et la base de données. Il reçoit tous les événements de l'utilisateur et enclenche les actions à effectuer. Si une action nécessite un changement des données, le contrôleur demande la modification des données au modèle ou dans notre cas, fait directement la modification des données et ensuite avertit la vue que les données ont changé pour qu'elle se mette à jour. C est dans les contrôleurs que la grande partie du développement d un site web se trouve.

Un projet web est initialement divisé en trois grands dossiers. Le dossier application contient le modèle MVC et donc, toute la programmation fait par nous. Le dossier library contient toutes les classes de programmation de Zend, le cœur de Zend. Il peut inclure d autres classes de programmation comme celle de Facebook et de CakeMail. Le dossier public comprends tous les éléments qui vont être accessible publiquement et consulter par l utilisateur (images, css). Le serveur pointe donc directement sur ce dossier qui comprend index.php. Le but du fichier index.php est de renvoyer le serveur dans le dossier application en connectant les classes dans le dossier library. Voici l architecture presque de base : application/ controllers/ IndexController.php NewsController.php models/ DbTable/ News.php views/ scripts/ index/ index.phtml news/ index.phtml helpers/ filters/ config/ application.ini layouts/ scripts/ layout.phtml bootstrap.php library/ Zend/ public/.htaccess index.php images/ css/ js/

L un des avantages de cette structure est au niveau de la sécurité. En effet, comme l adresse du site web pointe directement dans le dossier public, il est impossible de revenir en arrière dans l url avec les deux points «../application/». Les fichiers sont donc utilisé et visible exclusivement par le serveur. On remarque la présence du fichier bootstrap.php dans le dossier application. Le bootstrap permet de faire des configurations de base et d initialiser les modules qui seront appelé.

Un contrôleur est une classe qui peut contenir plusieurs actions permettant de contrôler plusieurs pages. On créé généralement un contrôleur pour un module. Par exemple, pour un module permettant la gestion de la nouvelles, on pourrait avoir un contrôleur NewsController permettant de faire les actions d ajouter, de modifier, de supprimer et de consulter. Ainsi, notre contrôleur pourra contenir les fonctions AddAction, EditAction, DeleteAction, ManageAction. Le nom des fonctions réalisant les actions doivent terminer par "Action"; et le nom des contrôleurs par «Controller». Ainsi, ces méthodes peuvent alors être demandées via le web. Par défaut, l url des projets Zend respectent le schéma «controller/action, où "controller" pour le nom du contrôleur d'action (moins le suffixe "Controller") et «action» pour une méthode d'action (moins le suffixe "Action"). Ainsi, pour aller ajouter une nouvelle, l adresse du site web serait ceci : www.domaine.com/news/addnews. Typiquement, il devrait toujours y avoir un IndexController et un ErrorController. Le IndexController permet de généré la page d accueil du site et le ErrorController de générer les erreurs rencontrés soit dans la programmation ou d autres types comme une erreur http 404 (contrôleur ou l'action introuvable) ou http 500 (erreurs d'application). Voici un contrôleur de base : // application/controllers/indexcontroller.php class IndexController extends Zend_Controller_Action public function init() /* Initialize action controller here */ public function indexaction() // action body

Les scripts de vue sont écrits en html pouvant contenir du php (.phtml). Ils sont placés dans le dossier «application/views/scripts/» où ils sont encore subdivisés en utilisant les noms de contrôleurs. Dans notre cas, nous avons un IndexController et un NewsController. Il y a donc deux dossiers dans le dossier scripts (index et news). Au sein de ces sous-répertoires, vous pourrez ensuite trouver et de créer des scripts de vue qui correspondent à chaque action du contrôleur exposés, dans le cas par défaut, nous avons donc les scripts de vue index.phtml Exemple de vue index.phtml : <!-- application/views/scripts/index/index.phtml --> <div id="welcome"> <h1>welcome to the <span id="zf-name">zend Framework!</span><h1 /> <h3>this is your project's main page<h3 /> <div id="more-information"> <p> <img src="http://framework.zend.com/images/poweredby_zf_4lightbg.png" /> </p> <p> Helpful Links: <br /> <a href="http://framework.zend.com/">zend Framework Website</a> <a href="http://framework.zend.com/manual/en/">zend Framework Manual</a> </p> </div> </div>

Le modèle est encore peu exploiter dans nos projets Zend parce que nous avons réussis à adapter facilement nos contrôleurs pour effectuer les tâches demandé avec la base de données. La connexion avec la base de donnés avec fait dans le fichier application.ini dans le dossier configs. Le fichier est simple et contient les informations de connexions. Nous sauterons par-dessus les explications de ce fichier, l important est de s assurer que les informations sont bonnes pour que le site soit bien connecté. Pour l instant, ce que nous faisons avec les modèles, c est la création de classe qui va servir d instance pour manipuler les tables d une base de donnés. Exemple d instance à la table News : <?php // application/models/dbtable/news.php /** * C est une classe DbTalbe pour la table news. */ class Default_Model_DbTable_News extends Zend_Db_Table_Abstract /** Table name */ protected $_name = 'news'; Pour exploiter encore mieux ces classes, c est là que nous pourrions mettre nos fonctions AddNews, EditNews, DeleteNews. Pour l instant, c est directement dans nos contrôleurs que ces actions sont effectuées.