Implementando a Arquitetura MVC em PHP 2. MVC Modelo, Viso,
Controlador
- Model-view-controller (MVC) um padro de arquitetura de
software.
-
- Separar papispara:reduziracomplexidadeefacilitaramanuteno ,
especialmente quando a aplicao fica grande. Tambmfacilitaadiviso de
tarefasem umaequipede trabalho.
-
- Tornaraplicaesmaisflexveiseextensveis .
-
-
- Permite inclusive a substituio da tecnologia de uma camada sem
afetar as demais.
3. MVC Modelo, Viso, Controlador
-
- Foi criado como padro de projeto arquitetural usado em
interfaces de usurio na linguagemSmalltalk .
4. Arquitetura MVC exibe o modelo Consulta ou altera o modelo
define que viso ser exibida 5. MVC Modelo, Viso, Controlador
-
- Refere-se aos dados da aplicao.
-
- Pode usar mecanismos de armazenamento persistente (bancos de
dados) ou no.
-
- Determina como o modelo vai ser mostrado ao usurio.
-
- Recebe interaes do usurio e a partir delas, manipula o modelo e
determina a viso a ser usada.
-
- Pode alterar o modelo ou apenas consult-lo para posterior
apresentao deste modelo a partir de uma determinada viso.
-
- Em outras palavras, faz o meio-de-campo entre o modelo e a
viso.
6. Arquitetura MVC Resumo
- Vises Como os dados so apresentados;
- Controladores Recebe entrada de dados do usurio. Manipula o
modelo e determina a viso para exibio do modelo.
7. Arquitetura MVC 8. Exemplo 1 MVC Super Simples
- MVC bem simples para entendermos a diviso.
-
- Controlador pessoa_controlador.php
9. Modelo - pessoa.php 10. Controlador - pessoa_controlador.php
11. Viso - pessoa_visao.php < html > < head > <
title > Pessoa title > head > < body > < h1 >
Pessoa - Viso h1 > < p > Nome: p > < p > Fone: p
> body > html > 12. Exemplo 2 MVC com Dispatcher
- Usando um front-controller ou dispatcher
-
- H um controlador principal (index.php) que despacha as
requisies para controladores e aes especficos.
-
- Controladores e aes especficos so definidos pelos parmetros da
URL do dispatcher:
-
-
-
http://localhost/mvc/index.php?controlador=pessoa&acao=mostra
-
- No nosso exemplo, o dispatcher:
-
-
- Instancia o controlador especificado
-
-
- Executa o mtodo (ao) especificado do controlador
instanciado.
13. Dispatcher - index.php 14. Controlador -
pessoa_controlador.php 15. Usando convenes
- Podemos convencionar algumas coisas.
- Se um controlador no for definido, podemos usar um controlador
padro chamado deHomeControlador , por exemplo.
- Caso uma ao no tenha sido definida, usamos a aoindex , por
exemplo.
- Assim, se nada for dito, a aoindexdo
controladorHomeControladorser executada.
- Para isso, devemos alterar nosso dispatcher...
16. Convenes no Dispatcher 17. Problemas
- Podemos enviar requisies que no passam pelo dispatcher.
-
- Seria mais interessante o dispatcher centralizar o tratamento
de todas as requisies.
- Enviar o nome do controlador e da ao via parmetros deixa a URL
muito longa e ainda diminui sua legibilidade.
-
- Seria melhor padronizarmos uma URL mais resumida para
definirmos o nome do controlador e da ao.
18. Soluo
- Uma soluo bastante interessante para os problemas abordados a
reescrita de URL.
- Com esse recurso podemos fazer a seguinte conveno:
-
- Para a URL:http://localhost/mvc/pessoa/mostra
-
-
- mvc um diretrio da nossa aplicao
-
-
- pessoa o nossocontrolador
-
-
- mostra a nossaaoque ser executada no controlador.
19. Reescrita de URL
- Para usarmos reescrita de URL, precisamos habilitar o mdulo de
reescrita do Apache:
-
- No arquivo:C:xamppliteapacheconfhttpd.confdescomente a seguinte
linha:
-
-
- LoadModule rewrite_module modules/mod_rewrite.so
- Depois disso, criamos nossas regras de reescrita no
arquivo.htaccessno diretrio raiz da aplicao:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond
%{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
20. Testando a Reescrita - index.php < html > < head >
< title > Testa Reescrita title > head > < body >
< h1 > Testa Reescrita h1 > < p > URL: p > < p
> Controlador: p > < p > Ao: p > body > html
>