Nesse Artigo irei exemplificar o conceito de MVC e sua funcionalidade usando o PHP.

A nossa estrutura de pastas fica da seguinte forma:

  • /(raiz)
  • controller/
  • model/
  • – view/
  • index.php

Entendendo o padrão MVC na prática

Primeiramente vamos começar implementado nosso modelo:



<?php
class Cliente {
 private $id;
 private $nome;
 
 /**
 * ...
 * getters e setters
 * ...
 *
 */
 
 public function save() {
 // logica para salvar cliente no banco
 }
 
 public function update() {
 // logica para atualizar cliente no banco
 }
 
 public function remove() {
 // logica para remover cliente do banco
 }
 
 public function listAll() {
 // logica para listar toodos os clientes do banco
 }
 
 /**
 * ...
 * outros métodos de abstração de banco
 * ...
 *
 */
}

?>

O modelo, como foi falado antes, é responsável pela abstração do banco de dados. Por isso, todos os métodos que acessarão o banco de dados para modificações ou retornos devem ser desenvolvidos no modelo.

Seguindo com a estrutura, vamos criar uma view com a listagem dos clientes:


<?php
$clientes = $_REQUEST['clientes'];
?>;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Implementando MVC</title>
 </head>
 <body>
 <table>
 <tr>
 <th>ID</th>
 <th>Cliente</th>
 </tr>
 <?php foreach ($clientes as $cliente): ?>
 <tr>
 <td><?php echo $cliente->getId(); ?></td>
 <td><?php echo $cliente->getNome(); ?></td>
 </tr>
 <?php endforeach; ?>
 </table>
 </body>
</html>

A visão tem como papel receber os dados do controle e exibir para o usuário. Como podemos ver no código acima, a view está recebendo um request com um vetor de objetos cliente que são exibidos em tela com um foreach.

Ainda seguindo a estrutura, vamos ao controller:


<?php
require_once 'model/Cliente.php';
 
class ClienteController {

 public function listar() {
 $cliente = new Cliente();
 $clientes = $cliente->listAll();

 $_REQUEST['clientes'] = $clientes;

 require_once 'view/cliente_view.php';
 }
}

?>

No controle nos apenas chamamos nosso modelo, que é a classe responsável pela abstração. Ao recuperarmos os dados, mandamos para a nossa visão.

Para chamar tudo isso, no index.php usaremos o seguinte código:


<?php
$classe = $_GET['class'];
$metodo = $_GET['acao'];
 
$classe .= 'Controller';
 
require_once 'controller/'.$classe.'.php';
 
$obj = new $classe();
$obj->$metodo();
?>

Esta foi uma implementação simples da arquitetura de projeto MVC, foi apenas um incentivo para que todos possam implementar este padrão de projeto e deixar o código mais fácil e o desenvolvimento mais rápido. Vale à pena estudar estes padrões independentes da linguagem em que esteja desenvolvendo.

Assista ao vídeo abaixo:


Links Úteis

  • Um bate-papo sobre o Delphi:
    O Delphi está em constante evolução e com ele podemos criar aplicações desktop, servidores de aplicações, aplicativos móveis, entre outros. Neste DevCast temos um bate-papo sobre essa poderosa ferramenta de desenvolvimento.
  • Base de dados de cidades com código do IBGE:
    Baixe agora uma base de dados de estados e cidades brasileiros no formato SQL para incorporar ao seu projeto. Veja também algumas consultas que podem ser feitas sobre esses dados.

Saiba mais sobre MVC e PHP ;)

  • O que é MVC?:
    Neste curso vamos entender o que é o padrão MVC (Model-VIew-Controller), qual sua proposta e aplicabilidade no desenvolvimento de aplicações.
  • Carreira Programador PHP:
    Neste guia de estudos você encontra os conteúdos que precisará para se tornar um programador PHP completo. Confira a sequência de cursos e exemplos que te guiarão do básico ao avançado em PHP.
  • Linguagem PHP:
    Neste Guia de Consulta você encontrará todo o conteúdo que precisa para aprender PHP, uma linguagem de programação amplamente utilizada para a construção de aplicações web.