Zend Framework: Instalando e configurando


MVC

O Zend Framework foi concebido com foco na metodologia MVC, que vem provando ser uma excelenete escolha para o desenvolvimento e manutenção das aplicações.

Basicamente, o MVC significa as siglas referentes às 3 camadas nas quais uma aplicação é dividida:

  • Model: camada que reúne a regra de negócio da aplicação. Nessa camada temos os códigos que manipulam e processam os dados.
  • View: camada que reúne a visualização da aplicação. Nessa camada temos os códigos que manipulam como as informações dos models serão exibidas (html, xml, etc).
  • Controller: Recebe os dados e dispara os models e as views necessárias. Poucos códigos são utilizados nos controllers.

Estrutura de diretórios

Utilizando o MVC como base para o desenvolvimento, é possível obter uma maior organização dos arquivos e scripts.

O Zend Framework é bem versátil quanto a essa configuração, você pode alterar da forma que quiser. Para essa instalação básica, eu proponho a seguinte estrutura:

/
 |-- application
 |   |-- config
 |   |-- controllers
 |   |-- models
 |   |-- views
 |       |-- scripts
 |-- bin
 |-- doc
 |-- library
 |-- public
 |-- test

Lógico, essa é uma sugestão, que pode ser mudada a qualquer momento. Vamos clarear um pouco. O diretório application reúne os códigos escritos para a aplicação em si, contendo suas configurações, seus controllers, seus models e suas views. O diretório bin reúne scripts executáveis que passam vir a ser confeccionados para faciliar algumas tarefas repetitivas. O diretório doc conterá a documentação gerada a pártir da sua aplicação. O diretório library irá conter os arquivos referentes ao framework e outros componentes que a aplicação venha utilizar. O diretório public conterá todos os arquivos que podem ser acessados na nossa aplicação. E o último, mas não menos importante, test que contém os códigos referentes aos testes.

Baixando e copiando o framework

Para conseguir uma cópia da versão mais recente do Zend Framework acesse:

http://www.zend.com/community/downloads

Escolha a versão full, assim poderá usufruir de todas as ferramentas do framework. è necessário se cadastrar para realizar o download, porém, é totalmente gratuíto.

Após realizar o download, extraia os arquivos em uma pasta qualquer. Os arquivos necessários para o funcionamento do framework está dentro de uma pasta Zend, que se encontra dentro da pasta library dos arquivos descompactados. Portanto, essa pasta Zend deve ser copiada para o library da nossa aplicação. A estrutura de diretórios agora fica assim:

/
 |-- application
 |   |-- config
 |   |-- controllers
 |   |-- models
 |   |-- views
 |       |-- scripts
 |-- bin
 |-- doc
 |-- library
     |-- Zend
 |-- public
 |-- test

Criando o bootstrap.php

O arquivo bootstrap.php é o arquivo responsável por realizar e indicar quais são as configurações da nossa aplicação para ser utilizado o framework instalado. Ele indicará qual o ambiente a ser utilizado, quais são os diretórios, etc.

Vamos criar o bootstrap.php dentro da pasta application com o conteúdo abaixo:

<?php
/**
 * Configura as constantes APPLICATION_PATH e APPLICATION_ENVIRONMENT acaso
 * elas não tenham sido configuradas no index.php.
 */
defined('APPLICATION_PATH')
    or define('APPLICATION_PATH', dirname(__FILE__));

defined('APPLICATION_ENVIRONMENT')
    or define('APPLICATION_ENVIRONMENT', 'development');
   
set_include_path(
    APPLICATION_PATH . '/../library'
    . PATH_SEPARATOR . get_include_path()
);

/**
 * Configura o autoload do Zend Framework
 */
require_once "Zend/Loader.php";
Zend_Loader::registerAutoload();
   
/**
 * Captura a instância única do Zend_Controller_Front, que implementa o Design Pattern
 * Sigleton.
 */
$frontController = Zend_Controller_Front::getInstance();

/**
 * Configura o diretório dos controllers
 */
$frontController->setControllerDirectory(APPLICATION_PATH . '/controllers');

/**
 * Configura o ambiente de execução do projeto.
 */
$frontController->setParam('env', APPLICATION_ENVIRONMENT);

/**
 * Limpa as variáveis globais. (somente o $frontController)
 */
unset($frontController);

Veja que não fechamos o código com o ?> propositalmente, pois, é um dos padrões do framework.

Criando o index.php

O aquivo index.php é o arquivo responsável por acessar a aplicação. Ele executa o bootstrap.php e inicia o framework.

Crie o index.php dentro da pasta public com o seguinte conteúdo:

<?php
/**
 * Constante que aponta para o diretório application
 * também utilizada para incluir o diretório library no include_path do php
 */
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application/'));

/**
 * Inclui o bootstrap.php. Atquivo responsável pela configuração
 * do projeto.
 */
try {
    require '../application/bootstrap.php';
    /**
     * Dispacho da controller. Dispara a execução dos controllers e actions.
     */
    Zend_Controller_Front::getInstance()->dispatch();
} catch (Exception $exception) {
    echo '<html><body><center>'
       . 'An exception occured while bootstrapping the application.';
    if (defined('APPLICATION_ENVIRONMENT')
        && APPLICATION_ENVIRONMENT != 'production'
    ) {
        echo '<br /><br />' . $exception->getMessage() . '<br />'
           . '<div align="left">Stack Trace:'
           . '<pre>' . $exception->getTraceAsString() . '</pre></div>';
    }
    echo '</center></body></html>';
    exit(1);
}

Criando o .htaccess

O arquivo .htaccess contém algumas configurações do servidor web apache. No nosso caso ele é responsável por duas coisas:

  • Mapear as requisições para o arquivo index.php
  • Permitir o acesso a aplicação utilizando "URLs claras" (muita gente usa o termo URL Limpa)

Para tanto, precisamos criar o arquivo .htaccess dentro do nosso diretório de aplicação com o seguinte conteúdo:

RewriteEngine On
RewriteBase /public
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Atenção, se você criou o projeto na raiz do seu DocumentRoot ou seja, dentro da pasta htdocs do seu servidor web, mais nenhuma configuração precisa ser feita. Mas você criou dentro de um diretório como por exemplo como o nome teste, você deve acertar a configuração RewriteBase acima para:

RewriteBase /teste/public

Criando o controller

Tendo o framework configurado, o processo de desenvolvimento passa a se preocupar apenas com os desenvolvimentos dos controllers, models, views e testes.

O controller padrão a ser utilizado, é o IndexController.php. Os controllers deve seguir as seguintes regras:

  • Os controllers devem ser criados dentro da pasta application/acontrollers
  • No nome do controller a primeira letra de cada palavra deve ser em maiúsculas e as seguintes minúsculas. Ainda deve sempre terminar com a palavra Controller. Exemplo: IndexController, TesteContoller, etc.
  • O arquivo deve conter uma classe com o mesmo nome, extendendo a classe Zend_Controller_Action.
  • Cada método da classe que deve ser disparado, ou acessado, deve começar sempre com letras minúsculas, sendo as próximas minúsculas ou maiúsculas se for uma nova palavra. Ainda, deve sempre terminar com a palavra Action.

O controller padrão do framework é o IndexController e a action padrão a ser disparada é o método indexAction(). O controller padrão será disparado quando nenhum controller for informado e a action padrão será disparada quando nenhuma action for informada.

Seguindo as regras acima, vamos criar o controller padrão:

<?php
class IndexController extends Zend_Controller_Action {
    public function indexAction ()
    {

    }
}

Veja que foi criado uma classe com um método vazio. Isso é o esperado para essa aplicação de exemplo.

Criando a view

Já criamos o nosso controller e a nossa action. Agora precisamos criar a nossa view, que irá conter as informações de exibição.

As views dos controllers são criadas dentro da pasta application/views/scripts. Uma action pode disparar diversas views, ou pedaços de views. Por padrão, é disparado a view que contém o mesmo nome do action que é guardada dentro da pasta com o mesmo nome do controller. Para clarear, vamos criar uma view para um action que está dentro do IndexController.

Como o nome do controller é Index cria uma pasta chamada index, utilizando apenas letras minúsculas, dentro da pasta application/views/scripts.

Vamos criar agora efetivamente a view. A view deve conter o nome da action, em minúsculas, com a extensão phtml. Portanto, crie o arquivo index.phtml dentro da pasta application/scripts/index/ com o conteúdo:

<h1>Teste do Zend Framework</h1>
<p>Framework instalado e funcionando.</p>

Testando

Agora você pode testar seu framework, acessando http://localhost/public ou http://localhost/teste/public
Se aparecer as frases:

Teste do Zend Framework
Framework instalado e funcionando.

Ok. O Framework está instalado.

Conclusão

Esse guia foi construído com base na própria referência do Zend Framework. É uma configuração básica. Há muitos acertos que podem ser realizados. E muitos outros detalhes sobre a personalização e uso correto do seu framework. Para maiores informações, conseulte a documnetação ou pergunte aqui.