Entendendo a Arquitetura MVC
do Zend Framework
III Encontro PHP da Paraíba
Gedvan P. Dias - gedvan@gmail.com




         ...
OBJETIVOS

●   Mostrar uma visão geral da implementação MVC no
    ZF
●   Compreender o workflow das requisições HTTP ness...
NÃO SÃO OBJETIVOS...

●   Explicar o que é MVC
●   Explicar o que é o Zend Framework
●   Discutir sobre utilização de padr...
OBSERVAÇÕES SOBRE MVC E ZF

●   Implementações convencionais
●   Único ponto de entrada
    ●   usuarios.php, cadastro.php...
FRONT CONTROLLER
FRONT CONTROLLER

●   Zend_Controller_Front
●   Porta de entrada para o MVC
    ●   É executado no início da aplicação, lo...
O OBJETO REQUEST

●   Zend_Controller_Request_HTTP
●   Encapsula a requisição HTTP
    ●   Módulo
    ●   Controlador
    ...
O OBJETO REQUEST
●   Alguns métodos:
    ●   getModule(), GetController(), getAction()
    ●   isGet(), isPost(), isHead()...
O OBJETO RESPONSE

●   Zend_Controller_Response_HTTP
●   Encapsula a resposta HTTP
    ●   Body
    ●   Headers
    ●   HT...
O OBJETO RESPONSE
●   Alguns métodos
    ●   setBody(), appendBody(), prependBody()
    ●   setHeader()
    ●   setHttpRes...
O ROUTER
ROUTER

●   Responsável por identificar quem (módulo, controlador
    e ação) deve receber a requisição
●   A partir do ob...
ROUTER

●   Tipos de rotas
    ●   Zend_Controller_Router_Route
    ●   Zend_Controller_Router_Route_Static
    ●   Zend_C...
O DISPATCHER
O DISPATCHER

●   Responsabilidades:
    ●   Instancia o controlador ao qual a requisição está destinada
    ●   Invoca o ...
PLUGINS PARA O FC

●   Permitem adicionar funcionalidades ao workflow do
    MVC
●   Zend_Controller_Plugin_Abstract
●   U...
PLUGINS PARA O FC

●   Eventos:
    ●   routeStartup()
    ●   routeShutdown()
    ●   dispatchLoopStartup()
    ●   preDi...
ACTION CONTROLLERS
ACTION CONTROLLERS

●   Controladores de ação
●   Estendem a classe Zend_Controller_Action
●   Cada método público termina...
ACTION CONTROLLERS

●   Inicialização: método init()
●   preDispatch() e postDispatch()
ACTION HELPERS
ACTION HELPERS

●   São objetos que ajudam na realização de tarefas pelo
    controlador
●   Podem ser instanciados implic...
ACTION HELPERS

●   Como implementar?
    ●   Estender a classe Zend_Controller_Action_Helper_Abstract
    ●   Adicionar d...
ACTION HELPERS

●   Exemplos:
    ●   ViewRenderer
    ●   Redirector
●   Outros:
    ●   Logger
    ●   Session Messages
VIEW
VIEW
●   Responsáveis por gerar a saída da aplicação
●   Consiste em uma classe que “renderiza” um arquivo script
●   Os s...
VIEW HELPERS
VIEW HELPERS

●   São objetos que ajudam na tarefa das views
●   Normalmente, são usadas para automatizar a geração de
   ...
WORKFLOW
Dúvidas?
Obrigado!
Entendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend Framework
Entendendo a Arquitetura MVC do Zend Framework
Próximos SlideShares
Carregando em…5
×

Entendendo a Arquitetura MVC do Zend Framework

8.459 visualizações

Publicada em

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.

Publicada em: Tecnologia
0 comentários
7 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
8.459
No SlideShare
0
A partir de incorporações
0
Número de incorporações
399
Ações
Compartilhamentos
0
Downloads
280
Comentários
0
Gostaram
7
Incorporações 0
Nenhuma incorporação

Nenhuma nota no 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!

×