php 05 mvc

Download Php 05 Mvc

If you can't read please download the document

Upload: regis-magalhaes

Post on 28-May-2015

3.260 views

Category:

Documents


0 download

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 >