Le modèle « Modèle Vue Contrôleur » est très répandu dans le développement d’applications et occupe également une place importante dans le développement web. Il permet de structurer une application en distinguant la partie présentation d’une part et le code applicatif d’autre part, ce qui facilite le développement en équipe, la relecture et la maintenance. Dans le contexte d’une application web, on obtient les éléments suivants :
- Modèle : ce sont les données manipulées par le site (les données stockées en base – correspondent au mapping ORM, que l’on abordera plus loin)
- Vue : ce sont les différentes pages du site, qui affichent les informations. Le rôle de « vue » est généralement rempli par des templates.
- Contrôleur : le traitement des actions utilisateurs. Dans un contexte web, on utilise généralement un contrôleur frontal (Front-Controller) qui reçoit directement les requêtes utilisateur (URL et paramètres) et qui se charge d’exécuter le code adapté : les actions. Les correspondances entre les URL et les différentesactions sont spécifiées par le développeur et sont souvent appelées « routes » dans les frameworks PHP.
Code : | Sélectionner tout |
// Exemple de route http://www.monsite.fr/news/list/start/10 -> Controleur : news -> Action : list -> Paramètre : start=10
avec Struts, Spring, WebWork…
Événements
La programmation événementielle est un modèle différent du modèle MVC qui est surtout pratiqué dans le développement d’applications de type « client-lourd » qui s’exécutent sur le poste de travail de l’utilisateur.
Chaque élément de la page (boutons, liens, champs texte…) dispose d’événements correspondant par exemple au clic, à la modification ou à la sélection de l’objet auxquels il est possible d’associer différentes fonctions.
Ce modèle encourage l’utilisation de composants indépendants tels que des formulaires d’authentification, ou des listes d’éléments qui intègre les fonctions de tri et de pagination.
Templates
Les templates (gabarits) rentrent dans le processus de la séparation du code applicatif et de la présentation.
Une template est un fichier contenant essentiellement du code HTML complété de quelques commandes pour l’affichage d’informations issues du code métier. Il est également possible d’utiliser des templates différents pour
l’interface générale du site et pour la mise en page des contenus. Un template peut inclure d’autres templates, ce qui permet de mutualiser certaines parties des pages.
L’intérêt des templates :
- La présentation est séparée du code applicatif : il est possible de la modifier sans se préoccuper du traitement des données et inversement.
- La création des templates peut être confiée à des graphistes, car elle ne nécessite que très peu de connaissances techniques PHP.
- Il est possible de combiner des templates simples pour former une template plus complexe, et ainsi réutiliser le code au maximum.
Cache
Un système de cache permet de stocker le résultat de l’affichage de certaines pages ou d’actions utilisateur afin de le réutiliser directement lors du prochain accès. La montée en charge des applications s’en trouve améliorée, et les temps d’exécution se rapprochent des pages statiques.
Il est souvent possible de déclarer un cache pour des pages entières ou uniquement pour certaines zones.
Accès aux données
Les applications web accèdent pratiquement à chaque clic à une base de données. L’accès au données est donc une fonctionnalité essentielle, mais également critique et gourmande en temps de développement lorsqu’on utilise uniquement les fonctions standard de PHP.
Type de base de données
Un premier problème est l’indépendance vis à vis de la base de données. Même si MySQL est la base la plus utilisée dans les applications PHP, on souhaite généralement pouvoir remplacer la base de données lorsque cela est necessaire. Malheureusement, PHP utilise des API différentes pour chaque base et on constate que l’implémentations du langage SQL change suffisamment pour empêcher le fonctionnement de l’application avec une base différente que celle avec laquelle elle a été développée.
Un framework peut donc proposer une API unique et des fonctions de création de requêtes SQL, qui génèrent du code SQL adapté à la base de donnée utilisée. La simple modification d’un fichier de configuration permet alors de changer le type de base utilisé.
Mapping de relationnal object
Le framework peut également proposer une fonctionnalité d’ORM (Object Relationnal Mapping), c’est à dire qu’il permet masquer la complexité du langage SQL et d’effectuer la plupart des opération par l’intermédiaire d’objets très simples, ce qui allège significativement le travail du développeur.
Traditionnellement, un ORM demande un peu de configuration pour créer et enregistrer dans l’application des objets très simples appelés DAO (Data Access Object) qui représentent un élément d’une table donnée. La plupart des implémentations permettent de générer la configuration et les objets directement à partir de la structure de la base elle-même.
L’ORM tel que l’implémente Ruby on Rails sous le nom d’ActiveRecord ne nécessite aucune configuration et inspecte la base de données pour créer les différents objets. Le développement et la maintenance s’en trouvent grandement simplifiés au prix d’une légère perte de performances.
Code : | Sélectionner tout |
// Insertion d’une entrée dans une table commentaire = new Commentaire(); commentaire->setTitre( « Mon titre »); commentaire->setCorps( « Mon commentaire »); commentaire->save(); // Obtenir toutes les entrées d’une table commentaires = Commentaire.findAll();
Conventions
Pendant le développement d’une application, un ensemble de règles sont généralement définies concernant le noms des fichiers ou leur emplacement.
L’utilisation de conventions au niveau du framework permet d’utiliser ces règles pour configurer et lier implicitement les différents modules et classes de l’application, ce qui a pour effet de diminuer le nombre et le volume des fichiers de configuration dans l’application.
Des étapes de configuration sont seulement nécessaires lorsqu’on souhaite s’écarter des réglages par défaut.
La mise en place de conventions prend tout son intérêt lorsqu’elle est couplée à de la génération de code.
Génération de code
La mise en place d’un nouveau projet demande généralement la mise en place d’une structure globale et la création de nombreux fichiers.
La génération de code est utilisée pour gagner du temps grâce à l’initialisation automatique de la structure d’une application et à la création et déclaration de nouveaux éléments ou plugins via une simple ligne de commande.
Echafaudage
« L’échafaudage » (ou scaffolding) ajoute sans aucun développement une interface d’administration qui permet l’affichage, l’ajout, la suppression et l’édition d’éléments contenus dans une table de la base de données.
Fortement lié, à la fonctionnalité d’ORM, il permet d’obtenir instantanément une interface temporaire qui pourra plus tard être remplacée par une interface plus évoluée.
En général cette interface est générée à la volée par le framework sans qu’aucun code ne soit présent dans l’application. Il est cependant possible de demander la création du code correspondant et de s’en servir de base pour le développement de la véritable interface.
Gestion des droits
Le framework peut offrir des méthodes pour définir les rôles des utilisateurs ainsi que les droits nécessaires pour exécuter chaque opération. Il se charge ensuite de vérifier les autorisations à chaque appel d’action et de bloquer l’exécution si nécessaire.
URL conviviales
Les applications web dynamiques utilisent généralement des paramètres dans les adresses (URL) pour transmettre des informations de page en page.
Les URL obtenues sont difficilement lisibles et ne sont pas très adaptées à l’indexation effectuée par les moteurs de recherches.
Les urls conviviales donnent l’impression à l’utilisateur (ou au moteur d’indexation) d’avoir affaire à un site statique :
http://www.monsite.fr/index.php?modu...mp;action=list
devient
http://www.monsite.fr/index.php/items/list
et même , si l’on a la possibilité de modifier la configuration du serveur web :
http://www.monsite.fr/items/list
Ces type d’URL sont souhaitables à la fois pour un bon référencement et pour le confort des visiteurs.
Ajax
AJAX est le nom donné à l’utilisation de Javascript dans un site afin de mettre à jour de façon asynchrone le contenu de certaines parties d’une page.
Un framework prend en charge les fonctionnalités de base de l’application web, ce qui rend difficile de concevoir des requêtes Ajax si le framework n’en prévoit pas l’utilisation.
Le support d’Ajax peut être complété par l’intégration d’une ou plusieurs bibliothèques ( prototype, script.aculo.us, YUI, …)., ce qui facilite leur utilisation.
Php Frameworks@@AMEPARAM@@ssplayer2.swf?doc=phpframeworks-090516151727-phpapp02&stripped_title=php-frameworks@@AMEPARAM@@phpframeworks-090516151727-phpapp02@@AMEPARAM@@php-frameworksView more presentations de Ryan Davis.
Billet original sur Symfolive