Christopher Alexander dit, « Chaque patron décrit un problème qui se produit à maintes reprises dans notre environnement, et décrit ensuite le cœur de la solution à ce problème, de telle façon que vous pouvez utiliser cette solution des millions de fois, sans jamais le faire de la même manière deux fois ». En tant qu’ingénieur logiciel, nous avons tous entendu parler de personnes de partager leurs quelques paroles de sagesse sur la façon de ne pas « réinventer la roue ». S’il existe déjà une solution à un problème commun, il est dans notre intérêt à l’utiliser, plutôt que de perdre notre temps à imaginer de nouvelles solutions et de le perfectionner. Ce qui est drôle parce que même si je ne suis pas entièrement d’accord avec pas de « réinventer la roue », je crois que de parfaitement résumer l’essentiel de patrons de conception en génie logiciel, qui est ce que nous allons parler aujourd’hui. Plus précisément, nous allons parler d’un modèle MVC et la façon dont il joue un rôle important dans le développement d’une grande application. Modèle MVC (Modèle – Vue – Contrôleur) MVC est un logiciel d’architecture modèle de simplement mettre les moyens qu’il est un modèle pour la définition de la structure de base sous-jacents et de travail d’une application à partir d’un point de vue architectural. Traditionnellement utilisé pour la construction du bureau des Interfaces graphiques, ce modèle a été largement adoptée pour la création d’applications web, et la mise en œuvre de ce modèle varient dans leur interprétation, avec des différences subtiles. C’est-à-dire qu’il n’y a pas de « bonne façon » d’aller à ce sujet. MVC, comme son nom l’indique divise la demande en trois parties reliées entre elles: Modèle, Vue et Contrôleur Modèle: Le modèle est l’objet de l’application, qui est juste une autre manière de dire qu’il est utilisé pour stocker des données qui est utilisé par le biais de notre application et est le pont entre la Vue component & le composant Contrôleur. Modèle ignore les deux autres composantes: la vue et le contrôleur. Vue: Le point de Vue est le modèle de présentation à l’écran, dans le sens que la vue est ce que voit l’utilisateur lors de l’utilisation de votre application. Il prend les données qui transitent sur elle et rend le résultat final qui est visible sur l’écran. Dans le cas d’une application web, vous pouvez vous imaginer le point de vue de la finale du document HTML qui est rendu par le navigateur (user-agent). Contrôleur: Contrôleur définit la façon dont l’utilisateur interagit avec notre application. Son travail consiste à prendre dans les entrées de l’utilisateur, mise à jour du modèle en conséquence, puis le re-rendre la vue. Le contrôleur est ce que les colles à la fois le modèle et la vue ensemble, et la majorité de notre logique d’application correspondant à l’interface utilisateur se trouve. Un moyen simple d’imaginer le modèle MVC est de penser à un modèle contenant des données statistiques. La vue affiche les données résidant dans le modèle dans un graphique. Ce graphique peut être soit un graphique ou un diagramme à barres, selon ce que l’utilisateur préfère, qui est géré par le contrôleur. Il n’y a pas beaucoup plus à explorer sur le modèle MVC, ce que nous avons parlé ci-dessus est plus que suffisant pour saisir une compréhension de base. Nous allons aller de l’avant et construire une simple application PHP pour comprendre le modèle MVC dans plus de profondeur. L’application que nous allons bâtiment sera très simple. Nous allons utiliser un fichier php (index.php) pour gérer la logique de notre application web. Nous allons briser notre application dans les contrôleurs qui correspondent à différents points de vue. Tous les contrôleurs vont dans le Contrôleur de répertoire, tous les points de vue va dans le répertoire View, et tous, le modèle va aller dans le répertoire Model. Voici donc comment nous allons structure de répertoires de notre application: Application -> Controller -> Model -> View -> index.php 12345 Application-> Controller-> Model-> View-> index.php // index.php ini_set('display_startup_errors', 1); ini_set('display_errors', 1); error_reporting(-1); function autoload($className) { include_once "Controller/{$className}.php"; include_once "Model/{$className}.php"; } spl_autoload_register("autoload"); $requestAction = !empty($_GET['action']) ? $_GET['action'] : 'Home'; switch ($requestAction) { case 'User': $controller = new UserController(); break; default: $controller = new HomeController(); break; } $controller->handleRequest(); 12345678910111213141516171819202122232425 // index.php ini_set('display_startup_errors', 1);ini_set('display_errors', 1);error_reporting(-1); function autoload($className){ include_once "Controller/{$className}.php"; include_once "Model/{$className}.php";}spl_autoload_register("autoload"); $requestAction = !empty($_GET['action']) ? $_GET['action'] : 'Home'; switch ($requestAction) { case 'User': $controller = new UserController(); break; default: $controller = new HomeController(); break;} $controller->handleRequest(); // Controller/UserController.php class UserController{ public function handleRequest() { include "View/userView.php"; } } 12345678 // Controller/UserController.php class UserController{ public function handleRequest() { include "View/userView.php"; }} // Controller/HomeController.php class HomeController{ public function handleRequest() { include "View/homeView.php"; } } 12345678 // Controller/HomeController.php class HomeController{ public function handleRequest() { include "View/homeView.php"; }} // View/userView.php echo ('' . '<h1>Web Application</h1>' . '<p>User View</p>' ); 123456 // View/userView.php echo ('' . '<h1>Web Application</h1>' . '<p>User View</p>'); // View/homeView.php echo ('' . '<h1>Web Application</h1>' . '<p>Home View</p>' ); 123456 // View/homeView.php echo ('' . '<h1>Web Application</h1>' . '<p>Home View</p>'); Ce que nous faisons ici est essentiellement récupérer les détails de la page que l’utilisateur visite de $_GET[‘action’], qui, si l’ensemble des cartes de l’action de son contrôleur correspondant. Si aucune action n’est trouvé, alors nous avons par défaut le Contrôleur de la Maison. Pour chaque contrôleur de nous avons, nous avons défini une fonction handleRequest() qui traite la requête et exécute l’application en conséquence, soit de rendre un point de vue particulier, ou de rediriger l’utilisateur vers une autre page (par exemple, après le succès de la soumission du formulaire). Espérons-le, si vous comprenez le flux de l’application que nous construisons ici, vous allez commencer à voir les avantages d’une approche MVC pour construire des choses. Pour moi personnellement, c’est de mieux en mieux organisés et structurés. C’est comme le déplaçant de la Programmation Procédurale à la Programmation Orientée Objet, sauf, dans ce cas, nous faisons de même avec la construction de notre application. Nous n’avons pas passé beaucoup de détails sur le modèle de la partie du modèle MVC, mais c’est un autre sujet complètement et quelque chose que je voudrais laisser les lecteurs à explorer par eux-mêmes. Pour les pièces de base, vous pouvez travailler avec votre modèle (qui est utilisé pour stocker des données) à l’intérieur de votre contrôleur et le modèle sur votre point de vue. Rappelez-vous que le modèle seul but est de gérer les données, et ignore à la fois le Contrôleur et la Vue. Le contrôleur est ce qui colle à la fois la Vue et le Modèle. Et la Vue est la façon dont vous représentez votre modèle à l’utilisateur. Il n’y a absolument aucune nécessité de forcer un modèle dans un point de vue où il n’est pas nécessaire, il est donc possible pour un point de vue qui ne dépend pas d’un modèle. Tag(s) Controller model MVC PHP View Category(s) Design uvdesk