Você está aqui: Zend Framework ::: MVC (Model View Controller) ::: Zend_Controller

Saiba mais sobre o Zend_Controller do Zend Framework

Quantidade de visualizações: 7694 vezes
O Zend_Controller é o coração do sistema MVC do Zend Framework. MVC é o padrão Model-View-Controller (Modelo-Visão-Controlador) e seu objetivo principal é separar as regras de negócios das regras de apresentação nas aplicações web. O Zend_Controller_Front implementa o padrão FrontController, no qual todas as requisições feitas pelo usuário são interceptadas por um controlador de frente e direcionadas para Action Controllers individuais. Estes Action Controllers respondem às requisições baseadas na URL requisitada. Desta forma, temos vários Action Controllers em um controlador, e cada um é responsável por tratar uma URL diferente.

O Zend_View é o sistema de templates para visualização (a parte visão do MVC) e é totalmente baseado em PHP. Isso significa que, ao contrário de Smarty ou PHPTAL, todos os templates de views são escritos em PHP. Para facilitar, o Zend_View fornece um sistema de plug-ins auxiliares que permite a criação de códigos de exibição diferenciados. Este sistema foi projetado para permitir a inserção de outros sistemas de template, tais como o Smarty.

O fluxo de trabalho do Zend_Controller envolve uma série de componentes, e um bom entendimento, tanto do fluxo quanto dos componentes envolvidos, é crucial para o desenvolvimento de aplicações web MVC usando o Zend Framework. Basicamente nós temos os seguintes processos:

a) O Zend_Controller_Front gerencia todo o fluxo de trabalho do sistema Zend_Controller. Ele é uma interpretação do padrão FrontController. O Zend_Controller_Front processa todas as requisições recebidas pelo servidor web e, baseado no padrão destas requisições, as delega para os ActionControllers (Zend_Controller_Action).

b) O Zend_Controller_Request_Abstract (também chamado de Request Object) representa o ambiente de requisição e fornece métodos para atribuir ou obter os nomes dos controladores e ações e quaisquer outros parâmetros de requisição. Adicionalmente o Zend_Controller_Request_Abstract mantém um registro em relação se a ação que ele contém já foi ou não despachada pelo Zend_Controller_Dispatcher. Extensões ao objeto de requisição abstrato podem ser usadas para encapsular todo o ambiente de requisição, permitindo aos roteadores obter informações a partir do ambiente de requisição de forma a definir os nomes dos controladores (controller) e das ações (action).

Por padrão, o Zend_Controller_Request_Http é usado, o que permite acesso a todo o ambiente de requisição HTTP.

c) O Zend_Controller_Router_Interface é usado para definir rotas. Roteamento é o processo de examinar o ambiente de requisição para determinar qual controller e qual action daquele controller deverá receber a requisição. Este controller, action e parâmetros opcionais são então colocados no objeto de requisição para serem processados pelo Zend_Controller_Dispatcher_Standard. O roteamento ocorre somente uma vez: quando a requisição é inicialmente recebida e antes que o primeiro controller seja despachado.

O roteador padrão, Zend_Controller_Router_Rewrite, obtém a URI final como especificado no Zend_Controller_Request_Http e a decompõem em controller, action e parâmetros baseado na informação do caminho da URL. Como um exemplo, a URL http://localhost/clientes/editar/454 seria decodificada para usar o controller clientes, a action editar e forneceria o valor 454 (talvez o id do cliente a ser editado).

d) O Zend_Controller_Dispatcher_Interface é usado para definir despachadores. Despachar é o processo de retirar o controller e a action do objeto de requisição e mapeá-los a um arquivo de controlador (ou classe) e método de ação na classe controladora. Se o controlador ou ação não existir, o despachador se encarrega de pesquisar controladores e ações padrões.

O real processo de despachar consiste em instanciar a classe controladora e chamar o método de ação nesta classe. Diferente do roteamento, que ocorre somente uma vez, o processo de despachar ocorre em um laço (loop). Se o status da atividade de despacho no objeto de requisição for reiniciado em qualquer ponto, o laço será repetido, chamando a action que estiver definida no objeto de requisição no momento. A primeira vez que o laço finaliza em decorrência do valor true sendo fornecido para o status de serviço de despacho do objeto de requisição, o processo de despachar estará concluído.

O despachador padrão é Zend_Controller_Dispatcher_Standard. Ele define controladores como MixedCasedClasses (nomes compostos começando em letras maiúsculas) terminando com a palavra Controller e os métodos de ação como camelCasedMethods (nomes compostos mas letras maiúsculas somente a partir da segunda palavra) terminando com a palavra Action: ClienteController::excluirAction(). Neste caso, o controller seria cliente e a ação seria excluir.

OBSERVAÇÃO IMPORTANTE: Convenções para o uso de letras maiúsculas e minúsculas - Uma vez que nós, humanos, somos historicamente inconsistentes em manter o uso adequado de letras maiúsculas e minúsculas quando estamos digitando os links, o Zend Framework normaliza a informação de caminhos para usar somente letras minúsculas. Isso afetará, é claro, a forma como damos nomes aos nossos controllers e actions, ou ainda, como nos referimos a eles em links. Se você quiser que seus controladores ou ações tenham nomes consistindo de múltiplas palavras MixedCasedWords ou camelCasedWords, terá que separar estas palavras na URL usando "-" ou "." (o caractere a ser usado pode ser configurado). Como exemplo, se quisermos chamar a action CadastroClienteController::cadastrarClienteAction, teremos que nos referir a ela usando /cadastro-cliente/cadastrar-cliente ou /cadastro.cliente/cadastrar.cliente.

e) O Zend_Controller_Action é o componente controller de ação base. Cada controller é uma classe única que extende a classe Zend_Controller_Action e deve conter um ou mais métodos action.

f O Zend_Controller_Response_Abstract define uma classe de resposta base usada para coletar e retornar respostas a partir dos controllers de ação. Ela coleta tanto os cabeçalhos quando o conteúdo do documento a ser retornado para a camada de visão.

A classe de resposta base padrão é Zend_Controller_Response_Http, que é adequada para o uso em um ambiente HTTP.

Resumindo, o fluxo de trabalho de Zend_Controller pode ser descrito da seguinte forma:

Uma requisição é recebida pelo Zend_Controller_Front. Este, por sua vez, chama Zend_Controller_Router_Rewrite para determinar qual controller (e qual action deste controller) ele deverá despachar a requisição. O Zend_Controller_Router_Rewrite então decompõe a URI afim de definir os nomes do controller e da action presentes na requisição. O Zend_Controller_Front então entra em um laço de despacho. Ele chama o Zend_Controller_Dispatcher_Standard e fornece a este a requisição e o encarrega de despachá-la para o controller e action especificados na requisição (ou usar os padrões). Depois que o controller finaliza seu trabalho, o controle retorna para o Zend_Controller_Front. Se o controller indicar que outro controller deve ser despachado resetando o status de despacho da requisição, o laço continua e outro despacho é efetuado. Em caso contrário o processo termina.

Link para compartilhar na Internet ou com seus amigos:

Veja mais Dicas e truques de Zend Framework

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 21 usuários muito felizes estudando em nosso site.