entendendo a arquitetura mvc do zend framework

42
Entendendo a Arquitetura MVC Entendendo a Arquitetura MVC do Zend Framework do Zend Framework III Encontro PHP da Paraíba III Encontro PHP da Paraíba Gedvan P. Dias - [email protected] Gedvan P. Dias - [email protected] Imagem:http://photogenetic.deviantart.com/art/architecture-69650308

Upload: gedvan-dias

Post on 24-May-2015

7.260 views

Category:

Technology


3 download

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

Page 1: Entendendo a Arquitetura MVC do Zend Framework

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 - [email protected] P. Dias - [email protected]

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

Page 2: Entendendo a Arquitetura MVC do Zend Framework

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

Page 3: Entendendo a Arquitetura MVC do Zend Framework

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

Page 4: Entendendo a Arquitetura MVC do Zend Framework

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

Page 5: Entendendo a Arquitetura MVC do Zend Framework

FRONT CONTROLLER

Page 6: Entendendo a Arquitetura MVC do Zend Framework

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

Page 7: Entendendo a Arquitetura MVC do Zend Framework
Page 8: Entendendo a Arquitetura MVC do Zend Framework

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.

Page 9: Entendendo a Arquitetura MVC do Zend Framework

O OBJETO REQUESTO OBJETO REQUEST

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

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

● getBaseURL()

● getClientIP()

● getCookie()

● getHeader()

● getParam()

● getRawBody()

● isSecure()

● isXmlHttpRequest()

Page 10: Entendendo a Arquitetura MVC do Zend Framework

O OBJETO RESPONSEO OBJETO RESPONSE

● Zend_Controller_Response_HTTP● Encapsula a resposta HTTP

● Body● Headers● HTTP Response Codes● Redirecionamento

Page 11: Entendendo a Arquitetura MVC do Zend Framework

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

Page 12: Entendendo a Arquitetura MVC do Zend Framework

O ROUTER

Page 13: Entendendo a Arquitetura MVC do Zend Framework

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

Page 14: Entendendo a Arquitetura MVC do Zend Framework

ROUTERROUTER

● Tipos de rotas● Zend_Controller_Router_Route● Zend_Controller_Router_Route_Static● Zend_Controller_Router_Route_Regex

● Translated Segments

Page 15: Entendendo a Arquitetura MVC do Zend Framework

O DISPATCHER

Page 16: Entendendo a Arquitetura MVC do Zend Framework

O DISPATCHERO DISPATCHER

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

Page 17: Entendendo a Arquitetura MVC do Zend Framework

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

Page 18: Entendendo a Arquitetura MVC do Zend Framework

PLUGINS PARA O FCPLUGINS PARA O FC

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

Page 19: Entendendo a Arquitetura MVC do Zend Framework

ACTION CONTROLLERS

Page 20: Entendendo a Arquitetura MVC do Zend Framework
Page 21: Entendendo a Arquitetura MVC do Zend Framework

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→

Page 22: Entendendo a Arquitetura MVC do Zend Framework

ACTION CONTROLLERSACTION CONTROLLERS

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

Page 23: Entendendo a Arquitetura MVC do Zend Framework

ACTION HELPERS

Page 24: Entendendo a Arquitetura MVC do Zend Framework

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

Page 25: Entendendo a Arquitetura MVC do Zend Framework

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

Page 26: Entendendo a Arquitetura MVC do Zend Framework

ACTION HELPERSACTION HELPERS

● Exemplos:● ViewRenderer● Redirector

● Outros:● Logger● Session Messages

Page 27: Entendendo a Arquitetura MVC do Zend Framework

VIEW

Page 28: Entendendo a Arquitetura MVC do Zend Framework

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

Page 29: Entendendo a Arquitetura MVC do Zend Framework

VIEW HELPERS

Page 30: Entendendo a Arquitetura MVC do Zend Framework

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

Page 31: Entendendo a Arquitetura MVC do Zend Framework

WORKFLOW

Page 32: Entendendo a Arquitetura MVC do Zend Framework
Page 33: Entendendo a Arquitetura MVC do Zend Framework
Page 34: Entendendo a Arquitetura MVC do Zend Framework
Page 35: Entendendo a Arquitetura MVC do Zend Framework
Page 36: Entendendo a Arquitetura MVC do Zend Framework
Page 37: Entendendo a Arquitetura MVC do Zend Framework
Page 38: Entendendo a Arquitetura MVC do Zend Framework
Page 39: Entendendo a Arquitetura MVC do Zend Framework
Page 40: Entendendo a Arquitetura MVC do Zend Framework
Page 41: Entendendo a Arquitetura MVC do Zend Framework

Dúvidas?

Page 42: Entendendo a Arquitetura MVC do Zend Framework

Obrigado!