Christopher Alexander diz, “Cada padrão descreve um problema que ocorre repetidas vezes em nosso ambiente, e então descreve o núcleo da solução para o problema, de tal forma que você pode usar esta solução um milhão de vezes, sem nunca fazê-lo da mesma forma duas vezes”. Como engenheiro de software, todos nós já ouvimos que as pessoas compartilhem suas poucas palavras de sabedoria sobre como não “reinventar a roda”. Se já existe uma solução para um problema comum, é do nosso melhor interesse de utilizá-lo, em vez de perder tempo no desenvolvimento de novas soluções e de aperfeiçoá-lo. O que é engraçado, porque apesar de eu não concordo inteiramente com não “reinventar a roda”, creio que resumem perfeitamente a essência de padrões de projeto em engenharia de software, que é o que vamos falar hoje. Mais especificamente, iremos falar sobre o padrão MVC e como ele desempenha um papel importante no desenvolvimento de uma grande aplicação. Padrão MVC (Model – View – Controller) MVC é um software padrão arquitetônico, o que simplesmente significa que é um padrão para definir a estrutura básica e fundamental de trabalho de um aplicativo a partir de um ponto de vista arquitetônico. Tradicionalmente usado para a construção de área de trabalho GUIs, este padrão tem sido amplamente adotada para a construção de aplicações web, e cada implementação deste padrão de variar na sua interpretação, com sutis diferenças. Que é dizer que não há uma “forma correta” de ir sobre ele. MVC, como o nome sugere divide a aplicação em três partes interligadas: Modelo, Visão e Controlador Modelo: o modelo é O objeto da aplicação, o que é apenas outra maneira de dizer que ele é usado para armazenar dados que é utilizado através de nossa aplicação e é a ponte entre o componente de Vista & o componente do Controlador. Modelo desconhece a existência dos outros dois elementos constitutivos: a visão e o controlador. : O modo de Exibição é o modelo de tela de apresentação, no sentido de que a vista é o que o usuário vê quando usa a sua aplicação. Ele obtém os dados que passam para ele e deixa o resultado final que é visível no ecrã. No caso de um aplicativo da web, você pode imaginar a vista como o final do documento HTML que é processado pelo navegador (user-agent). Responsável: Controlador define a forma como o usuário interage com o nosso aplicativo. Seu trabalho é levar na entradas do usuário, atualizar o modelo correspondente de acordo, e, em seguida, re-compor a vista. O controlador é o que colas, tanto o modelo e vista em conjunto, e a maioria dos nossos lógica de aplicativo correspondente a interface de usuário reside. Uma maneira simples de imaginar o padrão MVC é pensar em um modelo que contém alguns dados estatísticos. A vista processa os dados que residem dentro do modelo em um gráfico. Este gráfico pode ser um gráfico de pizza ou de um gráfico de barras, dependendo do que o usuário prefere, que é manipulada pelo controlador. Não há muito mais a explorar sobre o padrão MVC, o que nós falamos acima é mais do que o suficiente para agarrar uma compreensão básica do que ele. Vamos ir em frente e construir uma simples aplicação PHP para entender o padrão MVC em mais profundidade. O aplicativo que vamos construir, será muito simples. Nós vamos utilizar um único arquivo php (index.php) para lidar com a lógica de nossa aplicação web. Nós vamos quebrar a nossa aplicação em controladores que correspondem a diferentes pontos de vista. Todos os controladores de ir para o Controlador de diretório, todos os pontos de vista irá para o modo de Exibição de diretório, e o modelo vai para o Modelo de diretório. Então aqui está como nós vamos estrutura de diretórios da nossa aplicação: Aplicação -> Controller -> Model -> View -> index.php 12345 Aplicação-> 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>'); O que estamos fazendo aqui é, basicamente, obter os detalhes da página que o utilizador está a visitar a partir de $_GET[‘action’], que se o conjunto de mapas a ação de seu controlador correspondente. Se nenhuma ação for correspondido, então nós padrão para a Home do Controlador. Para cada controlador de nós temos, nós definimos uma função handleRequest() que processa o pedido e executa a aplicação de acordo, seja ele de processamento de um determinado modo de exibição, ou redirecionar o usuário para outra página (digamos, após o envio do formulário de sucesso). Espero que, se você compreender o fluxo da aplicação que estamos construindo aqui, você vai começar a ver os benefícios de uma abordagem MVC para construir coisas. Para mim, pessoalmente, é melhor organizado e estruturado. É como mover-se de Programação Procedural de Programação Orientada a Objeto, exceto, neste caso, estamos fazendo o mesmo com a construção de nosso aplicativo. não fomos muito em detalhes sobre o modelo parte do padrão MVC, mas esse é outro tópico completamente e algo que eu gostaria de deixar para os leitores a explorar para si. Para as peças básicas, você pode trabalhar com o seu modelo (que é usado para armazenar dados) dentro de seu controlador e passar essa modelo para o visualizar. Lembre-se que o modelo único propósito é o de gerenciar os dados, e desconhece o Controlador e o modo de Exibição. O controlador é o que colas tanto a Visão e o Modelo. E a Vista é como você representar seu modelo para o usuário. Não há absolutamente nenhuma necessidade de forçar um modelo em um modo de exibição, onde não é necessário, portanto, é possível que um ponto de vista que não dependem de um modelo. Tag(s) Controller model MVC PHP View Category(s) Design uvdesk