12.2. Básico - Zend_Controller

O Zend_Controller é desenhado para ser leve, modular e flexível. Em um design minimalista que permite flexibilidate e liberdade aos usuários enquanto fornece uma estrutura suficiente do qual o sistema contruídos com base noZend_Controller compartilham de algumas convenções e desenho do código similares.

O seguinte o diagrama mostra o fluxo de trabalho e como se comunicam os componentes internos:

O fluxo de trabalho do Zend_Controller é implementado por diversos componentes. Enquanto não é necessário o completo entendimento de cada um deles para usar o sistema, basta ter em mente o que cada componente faz e já estará de bom tamanho.

O fluxo de trabalho do Zend_Controller é relativamente simples:

Uma requisição é recebida pela Zend_Controller_Front, o qual por sua vez chama Zend_Controller_Router_Rewrite para determinal qual controller (e action do controller) vai ser executado (dispatch).

Zend_Controller_Router_Rewrite decompõem o URI em ordem de atribuição do nome do controller e action da requisitada.

Zend_Controller_Front então entra na expedição (dispatch) do loop.

É chamado o Zend_Controller_Dispatcher_Standard, passando a requisição para executar o controller e o action especificado na requisição (se não usa os defaults).

Após o controller ter finalizado, o controle é retornado ao Zend_Controller_Front. Se o controller indicou que outro controller deve ser executado é redifinindo o status do dispatched (execução) da requisição, o loop continua e outro dispatch é realizado. Caso controário o controle é finalizado.