SlideShare uma empresa Scribd logo
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
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
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 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 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
Entendendo a Arquitetura MVC do Zend Framework
O 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 REQUEST
●   Alguns métodos:
    ●   getModule(), GetController(), getAction()
    ●   isGet(), isPost(), isHead(), isPut()
    ●   getBaseURL()
    ●   getClientIP()
    ●   getCookie()
    ●   getHeader()
    ●   getParam()
    ●   getRawBody()
    ●   isSecure()
    ●
        isXmlHttpRequest()
O OBJETO RESPONSE

●   Zend_Controller_Response_HTTP
●   Encapsula a resposta HTTP
    ●   Body
    ●   Headers
    ●   HTTP Response Codes
    ●   Redirecionamento
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');
O ROUTER
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/*
ROUTER

●   Tipos de rotas
    ●   Zend_Controller_Router_Route
    ●   Zend_Controller_Router_Route_Static
    ●   Zend_Controller_Router_Route_Regex
●   Translated Segments
O DISPATCHER
O 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 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 FC

●   Eventos:
    ●   routeStartup()
    ●   routeShutdown()
    ●   dispatchLoopStartup()
    ●   preDispatch()
    ●   postDispatch()
    ●   dispatchLoopShutdown()
ACTION CONTROLLERS
Entendendo a Arquitetura MVC do Zend Framework
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
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 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 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 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 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 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
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
Dúvidas?
Obrigado!

Mais conteúdo relacionado

PDF
Apresentação zend framework 2 parte 1
PPTX
Conhecendo o Zend Framework
PDF
Começando com Zend Framework 2
PDF
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
PDF
NoSQL com Zend Framework 2
PDF
Como fazer boas libs
PPTX
Brutos Framework (Java WEB MVC)
PDF
Aula Introdução a VRaptor 4 - Pós Java UTFPR
Apresentação zend framework 2 parte 1
Conhecendo o Zend Framework
Começando com Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
NoSQL com Zend Framework 2
Como fazer boas libs
Brutos Framework (Java WEB MVC)
Aula Introdução a VRaptor 4 - Pós Java UTFPR

Mais procurados (20)

PPTX
Vhosts dinâmico
PDF
Zend Framework 2 - Desenvolvimento Ágil Competente
PDF
Tutorial codeigniter
PDF
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
PPT
Desenvolvimento web em java com JSP e Servlets
PDF
Como escolher o Framework Java para web?
PDF
Java Web 3 - Servlets e JSP 1
PDF
Criando websites a jato com Django
PPTX
Node JS - Parte 1
PDF
Django - A sua cápsula de soluções web em python
PDF
PHPMongoDB
PDF
Servlets e JSP
PDF
PHP like a super hero
PDF
Introdução ao vraptor
PDF
Java Web 2 - Ferramentas e configuração
ODP
Minicurso de Cakephp
PDF
O que esperar do Zend Framework 3
PDF
Framework web 01 - Aula UTFPR 2018
PPTX
Node JS - Parte 2
PDF
Curso JavaScript - Aula de Introdução como Programar
Vhosts dinâmico
Zend Framework 2 - Desenvolvimento Ágil Competente
Tutorial codeigniter
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Desenvolvimento web em java com JSP e Servlets
Como escolher o Framework Java para web?
Java Web 3 - Servlets e JSP 1
Criando websites a jato com Django
Node JS - Parte 1
Django - A sua cápsula de soluções web em python
PHPMongoDB
Servlets e JSP
PHP like a super hero
Introdução ao vraptor
Java Web 2 - Ferramentas e configuração
Minicurso de Cakephp
O que esperar do Zend Framework 3
Framework web 01 - Aula UTFPR 2018
Node JS - Parte 2
Curso JavaScript - Aula de Introdução como Programar
Anúncio

Destaque (20)

PDF
Construindo aplicações CLI com Symfony Console
PPTX
Riesgos
PDF
Design para não designers
PDF
AIX - Gerência de Processos
PPTX
Proteja sua aplicação com o zend framework 2
PDF
Desmistificando o Framework da Zend
ODP
Trabalhando com eventos e serviços no Zend Framework 2
PDF
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
PDF
Desfrutando os Componentes do Zend Framework
PPTX
Laravel 5: Entenda o ambiente e a estrutura MVC
PDF
A mágica por trás dos aplicativos ( Api com o Laravel )
PPTX
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
PPTX
CobiT Foundation Free Training
PDF
Padrões-05 - Padrões Arquiteturais - MVC
PDF
Oficina Design para quem não é Designer
PPT
Design Pra Quem Não é Designer
PDF
Padrões-02 - Padrões Arquiteturais - Camadas
KEY
Desenvolvendo Aplicações com Zend Framework
PPT
Padrões Arquiteturais de Sistemas
Construindo aplicações CLI com Symfony Console
Riesgos
Design para não designers
AIX - Gerência de Processos
Proteja sua aplicação com o zend framework 2
Desmistificando o Framework da Zend
Trabalhando com eventos e serviços no Zend Framework 2
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Desfrutando os Componentes do Zend Framework
Laravel 5: Entenda o ambiente e a estrutura MVC
A mágica por trás dos aplicativos ( Api com o Laravel )
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
CobiT Foundation Free Training
Padrões-05 - Padrões Arquiteturais - MVC
Oficina Design para quem não é Designer
Design Pra Quem Não é Designer
Padrões-02 - Padrões Arquiteturais - Camadas
Desenvolvendo Aplicações com Zend Framework
Padrões Arquiteturais de Sistemas
Anúncio

Semelhante a Entendendo a Arquitetura MVC do Zend Framework (20)

PDF
Zend Framework
PDF
Introdução ao Zend Framework 2
ODP
Zend Framework - PHPSP - 2009
ODP
Php 05 Mvc
PDF
Apostila Zend Framework
PDF
Framework PHP Zend e MVC
PDF
O que esperar do Zend Framework 2
PDF
Introdução ao zend framework
PDF
Apresentação Flisol 2016
PPT
ZF Básico - 3. Quick Start
PPT
Curso de Introdução - PHP Zend Framework
PDF
Iniciando com o_zend_framework
PPT
Programação Web com Zend Framework e Ajax com Dojo
PPT
ZF Básico - 1. Introdução
PDF
Zend Framework 1.11
PPT
ZF Básico - 4. Controle e Visão
PDF
Aplicações Profissionais para Internet com Zend Framework
PDF
Analise frameworks php
ODP
Prog web 08-php-mvc
PPT
MVC & Zend Framework
Zend Framework
Introdução ao Zend Framework 2
Zend Framework - PHPSP - 2009
Php 05 Mvc
Apostila Zend Framework
Framework PHP Zend e MVC
O que esperar do Zend Framework 2
Introdução ao zend framework
Apresentação Flisol 2016
ZF Básico - 3. Quick Start
Curso de Introdução - PHP Zend Framework
Iniciando com o_zend_framework
Programação Web com Zend Framework e Ajax com Dojo
ZF Básico - 1. Introdução
Zend Framework 1.11
ZF Básico - 4. Controle e Visão
Aplicações Profissionais para Internet com Zend Framework
Analise frameworks php
Prog web 08-php-mvc
MVC & Zend Framework

Último (20)

PDF
Processos na gestão de transportes, TM100 Col18
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Aula sobre desenvolvimento de aplicativos
PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PPTX
Aula sobre banco de dados com firebase db
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Processos na gestão de transportes, TM100 Col18
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula sobre desenvolvimento de aplicativos
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
COBITxITIL-Entenda as diferença em uso governança TI
Custos e liquidação no SAP Transportation Management, TM130 Col18
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Aula sobre banco de dados com firebase db
Aula 18 - Manipulacao De Arquivos python
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx

Entendendo a Arquitetura MVC do Zend Framework

  • 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.
  • 9. O OBJETO REQUEST ● Alguns métodos: ● getModule(), GetController(), getAction() ● isGet(), isPost(), isHead(), isPut() ● getBaseURL() ● getClientIP() ● getCookie() ● getHeader() ● getParam() ● getRawBody() ● isSecure() ● isXmlHttpRequest()
  • 10. O OBJETO RESPONSE ● Zend_Controller_Response_HTTP ● Encapsula a resposta HTTP ● Body ● Headers ● HTTP Response Codes ● Redirecionamento
  • 11. 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');
  • 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/*
  • 14. ROUTER ● Tipos de rotas ● Zend_Controller_Router_Route ● Zend_Controller_Router_Route_Static ● Zend_Controller_Router_Route_Regex ● Translated Segments
  • 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
  • 22. ACTION CONTROLLERS ● Inicialização: método init() ● preDispatch() e postDispatch()
  • 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()
  • 26. ACTION HELPERS ● Exemplos: ● ViewRenderer ● Redirector ● Outros: ● Logger ● Session Messages
  • 27. VIEW
  • 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');