Programando em MVC com PHP


Autor/fonte: Daniel Ribeiro
E-mail/Url: http://www.phpbrasil.com/articles/article.php/id/1509
Tags: [ mvc ]



Digg del.icio.us

Muita gente me pergunta sobre a maneira que eu programo usando MVC com PHP. É claro que já existem vários frameworks que utilizam essa técnica no desenvolvimento PHP. Porém eu resolvi apresentar aqui o conceitual do que eu uso que pode ser de material de auxílio para outros programadores também.

Para se ter uma ideia, vamos partir para o modelo de programação orientada a objetos. Programar em MVC nada mais é do que programar também usando orientação a objetos.

Vamos pensar então no conceito de objeto. Um exemplo, um veículo, onde teremos a classe de veículo e seus métodos:



Agora digamos que temos vários veículos, temos carro, moto, bicicleta e cada um terá eventos diferentes um do outro. Para isso criamos novas classes extendendo a classe Veiculo no qual as novas classes irão herdar os métodos e propriedades da classe Veiculo:



Desta forma quando instanciarmos o objeto Bicicleta, podemos utilizar os métodos de Veiculo, pois bicicleta é uma extensão de veiculo. Exemplo:



Agora vamos construir outra classe (Automovel) que instancia veiculo



Desta forma quando instanciarmos o objeto Automovel, podemos utilizar os métodos de Veiculo, pois automóvel é uma extensão de veiculo. Exemplo:



Percebeu que desta forma, se eu quiser mudar o comportamento de um Veiculo (independente do que ele seja) basta modificar a classe Veiculo, que todos os tipos de veiculos serão alterados (pois eles extendem a classe Veiculo). Isso facilita muito na manutenção do código.

Pois bem, onde queremos chegar com tudo isso? Veja na próxima página como implementamos isso num sistema MVC.

Uma aplicação MVC nada mais é do que classes principais de:

  • M - Model - Utilizada como o negócio da sua aplicação, tudo o que for utilizado para armazenamento de dados ou obtenção dos dados da aplicação);
  • V - View - Utilizada para exibir para o usuário tudo o que a aplicação produz;
  • C - Controller - Utilizada para realizar o controle integrando o Model e View (aqui é que controlamos o fluxo da aplicação).


Bem se sabemos que o Model Interage com o banco de dados, entao criamos uma classe model principal com os métodos principais que ele tem.

Obs.: O exemplo que estou colocando aqui é só um mero exemplo, para você ter uma idéia, é claro que uma classe model existem mais métodos, dependendo da sua aplicação.



Bem agora temos a classe View:



Se você perceber, o Smarty segue um critério semelhante, não sei se você já usou Smarty, mas ele funciona mais ou menos assim:



Já que temos métodos semelhantes, podemos então aplicar em nossa view todos os métodos do Smarty, para não ter que se preocupar em trabalhar com manipulação de templates. Ficaria mais ou menos assim a nossa view:



Talvez você esteja se perguntando "Então se eu vou usar o Smarty, porque então eu tenho que criar uma View? E usar os métodos do Smarty dentro da view? Não poderia usar diretamente o Smarty?"

Poderia, mas digamos que você posteriormente não queira mais utilizar o Smarty, e sim outro gerenciador de templates. Você teria nesse caso que mexer em sua aplicação inteira, não é? Fazendo uma classe dessa forma, você só mexe na classe View, e programa a classe View pra usar outro gerenciador de templates.

Passamos para a classe Controller, que contém os métodos básicos que farão a sua aplicação funcionar. Até mesmo métodos genéricos que você utiliza dentro da sua aplicação.



Resumindo, a classe Controller irá utilizar métodos que são genéricos para todos os módulos de sua aplicação. Agora que já temos o Model, View e Controller, vamos criar os módulos de nossa aplicação usando MVC.

Veremos agora como criar os módulos de nossa aplicação extendendo as classes MVC que acabamos de criar.

Um dos módulos é o módulo de login, então teremos o loginModel, loginView, loginController e cada um desses serão classes que extenderão suas respectivas "classes mães". Exemplo:



A classe de View do login, além de ter os métodos herdados do View principal, também tem seus próprios métodos:



Agora sim iremos para a classe do controlador, que irá interagir com loginModel e loginView:



Agora que já temos o nosso controlador loginController, temos que fazer com que ele seja instanciado e chamado pelo usuário, para isso teremos um arquivo de login onde irá fazer a instância do nosso controlador do login.

Algo como login.php, este arquivo será chamado pelo browser, onde fará a requisição da sua classe.



Pensando dessa maneira, você terá que fazer um arquivo para cada módulo do seu sistema, se o seu sistema tiver vários módulos, então terá vários arquivos:



Se formos ver, todos os arquivos que fazem as requisições de suas classes são semelhantes, entao porque não generalizar e fazer em um arquivo? Um script que pode ser usado para chamar qualquer módulo do sistema?



Agora você tem um arquivo que pode chamar qualquer módulo/método do seu sistema, bastando especificar na url:



O que eu escrevi aqui é mais para fim didático de como construir aplicações usando o modelo MVC, e é claro que depois de você pegar o conceito, você vai aperfeicoar o mesmo ainda mais de um jeito que funcione melhor para o seu caso específico.




Enviado por xKuRt em


Itens relacionados

MVC em PHP com Smarty - Parte 1
PHP5Minutes #7 - O C do MVC
PHP5Minutes #6 - O V do MVC
Arquitetura MVC
Esclarecendo e entendendo o MVC
MVC em PHP com Smarty - Parte 2
PHP5Minutes #5 - O M do MVC

Avaliação

Esta publicação ainda não foi avaliada!


Avaliar:


A avaliação de publicações é restrita a membros cadastrados e logados no nosso site.



Comentários

Este artigo ainda não foi comentado ou o(s) comentário(s) que foi(ram) enviado(s) a ele ainda não foi(ram) publicado(s).


Envio de comentário:




  

Sábado, 22 de Julho de 2017




Leitura recomendada

Excel Avançado

Top 5 membros

Últimos membros online

Últimos membros cadastrados



Capa do livro
Design Para a Internet


Capa do livro
jQuery Mobile - Desenvolva Aplicações Web para Dispositivos Móveis com HTML5, CSS3, AJAX, jQuery e JQUERY UI


Capa do livro
Guia Essencial do HTML5, O - Usando Jogos para Aprender HTML5 e JavaScript





Hostnet

IMD