entendendo a arquitetura mvc do zend framework

Post on 24-May-2015

7.260 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

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.

TRANSCRIPT

Entendendo a Arquitetura MVC Entendendo a Arquitetura MVC do Zend Frameworkdo Zend FrameworkIII Encontro PHP da ParaíbaIII Encontro PHP da ParaíbaGedvan P. Dias - gedvan@gmail.comGedvan P. Dias - gedvan@gmail.com

Imagem:http://photogenetic.deviantart.com/art/architecture-69650308

OBJETIVOSOBJETIVOS

● 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

NÃO SÃO OBJETIVOS...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

OBSERVAÇÕES SOBRE MVC E ZFOBSERVAÇÕ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

FRONT CONTROLLER

FRONT CONTROLLERFRONT 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

O OBJETO REQUESTO OBJETO REQUEST

● Zend_Controller_Request_HTTP● Encapsula a requisição HTTP

● Módulo● Controlador● Ação● Parâmetros● Cookies, Environment, Header, Server, etc.

O OBJETO REQUESTO OBJETO REQUEST

● Alguns métodos:● getModule(), GetController(), getAction()

● isGet(), isPost(), isHead(), isPut()

● getBaseURL()

● getClientIP()

● getCookie()

● getHeader()

● getParam()

● getRawBody()

● isSecure()

● isXmlHttpRequest()

O OBJETO RESPONSEO OBJETO RESPONSE

● Zend_Controller_Response_HTTP● Encapsula a resposta HTTP

● Body● Headers● HTTP Response Codes● Redirecionamento

O OBJETO RESPONSEO 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');

O ROUTER

ROUTERROUTER

● 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/*

ROUTERROUTER

● Tipos de rotas● Zend_Controller_Router_Route● Zend_Controller_Router_Route_Static● Zend_Controller_Router_Route_Regex

● Translated Segments

O DISPATCHER

O DISPATCHERO DISPATCHER

● Responsabilidades:● Instancia o controlador ao qual a requisição está destinada● Invoca o método correspondente à ação da requisição

PLUGINS PARA O FCPLUGINS 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

PLUGINS PARA O FCPLUGINS PARA O FC

● Eventos:● routeStartup()● routeShutdown()● dispatchLoopStartup()● preDispatch()● postDispatch()● dispatchLoopShutdown()

ACTION CONTROLLERS

ACTION CONTROLLERSACTION 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→

ACTION CONTROLLERSACTION CONTROLLERS

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

ACTION HELPERS

ACTION HELPERSACTION 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

ACTION HELPERSACTION 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()

ACTION HELPERSACTION HELPERS

● Exemplos:● ViewRenderer● Redirector

● Outros:● Logger● Session Messages

VIEW

VIEWVIEW

● 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.)

VIEW HELPERS

VIEW HELPERSVIEW 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');

WORKFLOW

Dúvidas?

Obrigado!

top related