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.
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. 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. 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. 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
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
8. O OBJETO REQUEST
● Zend_Controller_Request_HTTP
● Encapsula a requisição HTTP
● Módulo
● Controlador
● Ação
● Parâmetros
● Cookies, Environment, Header, Server, etc.
13. 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/*
16. O DISPATCHER
● Responsabilidades:
● Instancia o controlador ao qual a requisição está destinada
● Invoca o método correspondente à ação da requisição
17. 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
18. PLUGINS PARA O FC
● Eventos:
● routeStartup()
● routeShutdown()
● dispatchLoopStartup()
● preDispatch()
● postDispatch()
● dispatchLoopShutdown()
21. 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
24. 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
25. 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()
28. 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.)
30. 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');