php 05 mvc
TRANSCRIPT
- 1. Programao para WEB
-
- Regis Pires Magalhes
-
-
- [email_address]
Implementando a Arquitetura MVC em PHP 2. MVC Modelo, Viso, Controlador
- Model-view-controller (MVC) um padro de arquitetura de software.
- Para que serve?
-
- 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
- Como surgiu?
-
- 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
- Modelo
-
- Refere-se aos dados da aplicao.
-
- Pode usar mecanismos de armazenamento persistente (bancos de dados) ou no.
- Viso
-
- Determina como o modelo vai ser mostrado ao usurio.
- Controlador
-
- 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
- Modelos Dados;
- 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.
-
- Modelo pessoa.php
-
- Viso pessoa_visao.php
-
- 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
-
- Podemos dizer que:
-
-
- 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 >