Entendendo a Arquitetura MVC do Zend Framework

0 views

Published on

Uma descrição em um nível médio de profundidade sobre a implementação do padrão MVC no Zend Framerwork, mostrando os principais componentes envolvidos, suas relações e a sequência de execução.

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
0
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
275
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Entendendo a Arquitetura MVC do Zend Framework

  1. 1. Entendendo a Arquitetura MVC do Zend Framework III Encontro PHP da Paraíba Gedvan P. Dias - gedvan@gmail.com Imagem:http://photogenetic.deviantart.com/art/architecture-69650308
  2. 2. OBJETIVOS ● Mostrar uma visão geral da implementação MVC no ZF ● Compreender o workflow das requisições HTTP nessa arquitetura ● Mostrar alguns detalhes da implementação ● Apresentar os principais componentes e classes envolvidas na implementação ● Foco nos Controllers e Views
  3. 3. NÃO SÃO OBJETIVOS... ● Explicar o que é MVC ● Explicar o que é o Zend Framework ● Discutir sobre utilização de padrões ou frameworks ● Dar uma visão superficial do MVC
  4. 4. OBSERVAÇÕES SOBRE MVC E ZF ● Implementações convencionais ● Único ponto de entrada ● usuarios.php, cadastro.php, perfil.php, … → index.php ● Não estenda, plugue ● Baixo acoplamento, Manutenibilidade, Escalabilidade ● URL amigáveis
  5. 5. FRONT CONTROLLER
  6. 6. FRONT CONTROLLER ● Zend_Controller_Front ● Porta de entrada para o MVC ● É executado no início da aplicação, logo após o bootstrap ● Inicializar, Rotear e Despachar a Requisição ● Enviar a resposta ● Implementa o padrão Singleton ● $_controllerDir
  7. 7. O OBJETO REQUEST ● Zend_Controller_Request_HTTP ● Encapsula a requisição HTTP ● Módulo ● Controlador ● Ação ● Parâmetros ● Cookies, Environment, Header, Server, etc.
  8. 8. O OBJETO REQUEST ● Alguns métodos: ● getModule(), GetController(), getAction() ● isGet(), isPost(), isHead(), isPut() ● getBaseURL() ● getClientIP() ● getCookie() ● getHeader() ● getParam() ● getRawBody() ● isSecure() ● isXmlHttpRequest()
  9. 9. O OBJETO RESPONSE ● Zend_Controller_Response_HTTP ● Encapsula a resposta HTTP ● Body ● Headers ● HTTP Response Codes ● Redirecionamento
  10. 10. O OBJETO RESPONSE ● Alguns métodos ● setBody(), appendBody(), prependBody() ● setHeader() ● setHttpResponseCode() ● setRedirect() ● canSendHeaders(), sendHeader() ● SendResponse() ● Named segments ● $response->prepend('header', 'Cabeçalho'); ● $response->append('footer', 'Rodapé'); ● $response->append('default', 'Adicionado ao segmento padrão');
  11. 11. O ROUTER
  12. 12. ROUTER ● Responsável por identificar quem (módulo, controlador e ação) deve receber a requisição ● A partir do objeto Request ● Rota padrão: :module/:controller/:action/*
  13. 13. ROUTER ● Tipos de rotas ● Zend_Controller_Router_Route ● Zend_Controller_Router_Route_Static ● Zend_Controller_Router_Route_Regex ● Translated Segments
  14. 14. O DISPATCHER
  15. 15. O DISPATCHER ● Responsabilidades: ● Instancia o controlador ao qual a requisição está destinada ● Invoca o método correspondente à ação da requisição
  16. 16. PLUGINS PARA O FC ● Permitem adicionar funcionalidades ao workflow do MVC ● Zend_Controller_Plugin_Abstract ● Utiliza o padrão Observer ● São registrados no FC através do método registerPlugin() ● Zend_Controller_Plugin_Broker $_plugins ● Zend_Controller_Plugin_ErrorHandler
  17. 17. PLUGINS PARA O FC ● Eventos: ● routeStartup() ● routeShutdown() ● dispatchLoopStartup() ● preDispatch() ● postDispatch() ● dispatchLoopShutdown()
  18. 18. ACTION CONTROLLERS
  19. 19. ACTION CONTROLLERS ● Controladores de ação ● Estendem a classe Zend_Controller_Action ● Cada método público terminado em “Action” é uma ação ● Executam ações de controle, não de negócio ● Instanciação de forms; ● Seleção da view e passagem de dados; ● Chamada dos modelos; etc. ● Thin Controllers → Fat Models
  20. 20. ACTION CONTROLLERS ● Inicialização: método init() ● preDispatch() e postDispatch()
  21. 21. ACTION HELPERS
  22. 22. ACTION HELPERS ● São objetos que ajudam na realização de tarefas pelo controlador ● Podem ser instanciados implicitamente ou carregados sob demanda ● Podem executar ações automáticas ● init, preDispatch, postDispatch ● Ou serem invocados controlador ● $this->_helper->nomeDoHelper ● Helper Broker: $_helper
  23. 23. ACTION HELPERS ● Como implementar? ● Estender a classe Zend_Controller_Action_Helper_Abstract ● Adicionar diretamente ao helper broker ou adicionar seu path e prefixo ● Método direct()
  24. 24. ACTION HELPERS ● Exemplos: ● ViewRenderer ● Redirector ● Outros: ● Logger ● Session Messages
  25. 25. VIEW
  26. 26. VIEW ● Responsáveis por gerar a saída da aplicação ● Consiste em uma classe que “renderiza” um arquivo script ● Os scripts contem código HTML com algum PHP ● O resultado é inserido no objeto Response, que será enviado ao browser cliente ● A engine padrão (Zend_View) é baseada em scripts PHP ● Podem ser usadas outras engines (Smarty, TinyButStrong, PEAR Flexy, etc.)
  27. 27. VIEW HELPERS
  28. 28. VIEW HELPERS ● São objetos que ajudam na tarefa das views ● Normalmente, são usadas para automatizar a geração de código HTML ● Uma vez registrados, são acessados como métodos da view ● Exemplos: ● BaseUrl: $this->baseUrl('user/add'); ● HeadTags Helpers: $this->headTitle('Título'); ● Elementos HTML: $this->htmlList($itens); ● Translate: $this->translate('Texto');
  29. 29. WORKFLOW
  30. 30. Dúvidas?
  31. 31. Obrigado!

×