O sistema Zend_Controller
foi construído tendo em mente
a extensibilidade, que pode ser obtida pela criação de subclasses das
classes existentes, ou pela criação de novas classes que implementem as
interfaces Zend_Controller_Router_Interface
e
Zend_Controller_Dispatcher_Interface
.
Zend_Controller foi construído para suportar modernos web sites com
URIs limpas (nenhum ou quase nenhum parâmetro de consulta). Deste modo, a
configuração sugerida requer que servidor web suporte a função de reescrita de URI para redirecionar todas as requisições para um simples arquivo, aqui chamado "index.php", o qual irá simplesmente incializar o
Zend_Controller_Front
. Em servidores Apache, isto é
manipulado por um módulo opcional chamado mod_rewrite.
O primeiro passo para configurar o servidor é instalar o mod_rewrite com sucesso, habilitando-o. O passo seguinte é colocar dois arquivos no diretório raiz: .htaccess e index.php. O arquivo .htaccess é usado pelo Apache e deve conter uma diretiva do mod_rewrite para redirecionar todas as requisições para index.php. Para propósitos de desenvolvimento, isto é freqüentemente mais simples para escrever uma diretiva mod_rewrite rule que ter de redirecionar todas as requisições para index.php com exceção de certas extensões de arquivo. Aqui está um exemplo de como configurar o .htaccess:
RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
No exemplo acima, todas as requisições que não contiverem uma das extensões de arquivo listadas serão passadas para index.php. Isto é útil para desenvolvimento, porém para sistemas em produção as regras de reescrita devem ser escritas de forma a excluir os diretórios.
Depois de criar e configurar o arquivo .htaccess, crie um novo
arquivo chamado index.php
. Este é um arquivo de
inicialização. O propósito do arquivo index.php é somente inicializar o
Zend_Controller_Front, o qual deve estar apropriadamente localizado fora
do diretório raiz do web server.
Nota | |
---|---|
O arquivo de inicialização deveria ser o único arquivo armazenado no document root. |
Para propósitos de segurança, a Zend recomenda fortemente não armazenar quaisquer arquivos PHP em diretórios que são acessíveis ao webserver (aqueles que estão abaixo da raiz de documentos). Enquanto isto não é possível a todos os cenários, como em hosts compartilhados, isto deve ser considerada uma boa prática e observada sempre que possível.
Crie o arquivo de inicialização, index.php
, na raiz de
documentos para inicializar o Zend_Controller_Front:
<?php require_once 'Zend/Controller/Front.php'; Zend_Controller_Front::run('/path/to/your/controllers') ?>
Consulte a próxima seção relativa ao
/path/to/your/controllers
. Como instruído em
README.txt
, o diretório da biblioteca Zend Framework deve
constar no include_path
. Se isto não for setado em
php.ini
, set_include_path()
deve ser chamada
neste arquivo antes do require_once()
.
Nota | |
---|---|
Por enquanto, estamos investigando soluções que não requerem a instalação do mod_rewrite. Nós intentamos sugerir uma configuração para ambos os sistemas, com e sem as funcionalidades de mod_rewrite. Também, por favor note que este sistema não está fora do escopo (não está destinado) ao Apache ou mod_rewrite especificamente , qualquer webserver com capacidades de redirecionamento similares deve ser suficiente (EXPLICAR). |
É recomendável que os websites construídos com o Zend Framework compartilhem uma estrutura de diretório comum. Enquanto isto não for possível a todas as situações, isto é para muitos ou talvez mais. Escolhendo utilizar esta estrutura ira fazer o seu código mais facilmente inteligível para para alguém familiarizado com as convenções adotadas no Zend Framework.
A estrutura de diretórios sugerida consiste também dos diretórios de biblioteca (da Zend e dos outros) e de aplicação.
/application /models /views /controllers /document_root /images /styles .htaccess index.php /library /Zend
Nota | |
---|---|
Esta seção ainda não está terminada. Ela permanece sujeita a alterações. |
Cada site deve definir um controlador chamado
IndexController
. Este é o controlador que irá ser utilizado
quando nenhum controlador for especificado na URI, como no exemplo desta
URI:
http://framework.zend.com/
A classe IndexController
deve ser armazenada em um
arquivo chamado IndexController.php
, que por sua vez deve ser
localizado no diretório dos controladores. A IndexController
deve possuir uma subclasse Zend_Controller_Action
. Aqui está
um exemplo de como usar IndexController
:
<?php require_once 'Zend/Controller/Action.php'; class IndexController extends Zend_Controller_Action { public function indexAction() { echo 'Hello from IndexController'; } public function noRouteAction() { $this->_redirect('/'); } } ?>
Nota | |
---|---|
Esta seção ainda não está terminada. Ela permanece sujeita a alterações. |