/Desenvolvimento

voltar
/Desenvolvimento

Criando um projeto com Zend Framework

Paulo Eduardo Lima Rezende
em Desenvolvimento

No artigo sobre Comparativo entre CodeIgniter e Zend Framework, também publicado aqui no iMasters comparei os dois frameworks de desenvolvimento em PHP com os quais eu mais trabalhei e tenho mais experiência, como disse o CodeIgniter não vem sendo atualizado com freqüência e deixou de ser uma boa alternativa para desenvolvimento de aplicações de grande porte com PHP, por isso passei a usar cada vez mais o Zend Framework.

Artigos sobre como começar com Zend Framework podem ser encontrados aos montes pela internet, posso citar aqui alguns, como o tutorial Getting Started with Zend Framework publicado por Rob Allen, que talvez seja o mais famoso deles, e outros como Zend Framework Tutorial SeriesComo Criar Um Projeto Usando O Zend Tool do Zend Framework ou Zend – Início, cada um deles com uma ênfase e abordagem diferente, e alguns já desatualizados por conta da velocidade de atualizações do próprio framework.

Mas se já existem tantos assim, por que escrever mais um? Bom, meu intuito com esse artigo é proporcionar uma abordagem mais simples que as frequentemente mostradas, que existem diferentes formas de montar a estrutura do seu projeto com Zend Framework, e que esteja atualizada com a versão 1.11.x do Framework (a versão estável mais recente até esse momento, em março de 2011).

Instalação do Ambiente

Antes de iniciar o desenvolvimento de aplicações com Zend Framework, vou presumir que você já tenha alguma experiência com PHP, e também que tenha um ambiente de desenvolvimento com um servidor web (preferencialmente apache) funcionando com php. Um banco de dados instalado não é obrigatório, mas será necessário para construir aplicações maiores com acesso a dados.

Caso você não tenha esse ambiente preparado, você poderá instalá-los individualmente indo aos sites da Apache Foundation e do PHP, além do site do seu banco de dados de preferência, e baixar as últimas versões dos softwares e instalá-los. Além dessa forma existem alguns pacotes prontos com todas essas aplicações para você realizar uma única instalação, um desses pacotes é o Zend Server, que já inlcui o Zend Framework, no site da Zend.

Download do Zend Framework

Se você realizou a instalação do Zend Server como dito acima, o download e instalação do Zend Framework já foi realizado junto com ele, caso contrário você deve ir a Página de Downloads do Zend Framework e baixar preferencialmente o Full Package, você baixará um arquivo compactado contendo a pasta bin, onde está o zend tool, a pasta library onde estão de fato os arquivos do framework, e diversas outras pastas contendo exemplos e bibliotecas de terceiros que não são relevantes para esse artigo.

Criação da Estrutura de Diretórios do Zend Framework


Fig. 1 – Estrutura de Diretórios do Zend Framework

O Zend Framework permite que você crie praticamente qualquer estrutura para armazenar os arquivos que de fato compõem sua aplicação. Na minha opinião isso mais dificulta do que facilita o aprendizado com Zend Framework, pois o desenvolvedor iniciante, na biblioteca, fica meio perdido com relação a como montar a melhor estrutura para trabalhar com o framework. Felizmente para isso existe uma estrutura recomendada pela Zend (fig 1) e é utilizando essa estrutura que vamos trabalhar nesse tutorial.

Existem diversas formas de se criar essa estrutura, cada uma delas mais fácil que a outra, mas que vão depender das ferramentas que você está utilizando.

Zend Tool

O primeiro modo de criar a estrutura de diretórios do Zend Framework e utilizando o Zend Tool, caso você não tenha configurado seu ambiente com Zend Server, antes de utilizar o Zend Tool, você deverá copiar os arquivos do Zend Tool que estão localizados na pasta bin, juntamente com os outros arquivos baixados do Zend Framework, para a pasta de arquivos binários dentro da sua instalação do PHP.

No caso de ambientes Linux e Unix essa pasta geralmente está localizada em um dos seguintes caminhos:

  • /usr/bin
  • /usr/local/bin
  • /usr/local/ZendServer/bin/
  • /Applications/ZendServer/bin/

No caso de ambientes Windows essa pasta geralmente está localizada em um dos seguintes caminhos:

  • C:PHP
  • C:Program FilesZendServerbin
  • C:WAMPPHPbin

Caso você tenha instalado o Zend Server isso já foi feito automaticamente junto com a instalação

Agora que o  Zend Tool já foi instalado no sistema e adicionado como uma variável path, tudo que você terá que fazer para criar a estrutura de diretórios para o Zend Framework é abrir seu console, ou prompt de comando navegar até a pasta onde deseja criar a estrutura de diretórios (isso pode variar entre Windows, Linux e MacOS e pode exigir um pouco de conhecimento em linha de comando, mas não tão complicado assim) e digitar o comando a seguir substituindo nome-do-projeto pelo nome do seu projeto:

zf create project nome-do-projeto

Por fim você deve verificar se a pasta Zend foi copiada para dentro do diretório library criado pelo comando acima, caso ela tenha sido copiada já está tudo certo, caso contrário basta copiá-la de dentro do diretório library, incluido junto com o Zend Framework que você havia baixado e descompactado. Você também pode copiar essa pasta para dentro do include_path do seu PHP, e com isso poderá utilizar o Zend Framework em vários projetos sem ter que copiá-lo para cada um deles.

Zend Studio

Outra forma de criar a estrutura de diretórios necessária para se desenvolver com Zend Server é utilizando o Zend Studio, o Zend Studio é uma IDE de desenvolvimento baseada em eclipse e desenvolvida pela própria zend e pode ser adquirida na página do Zend Studio. Após adquirir e instalar o Zend Studio tudo que você precisa fazer é clicar em File->New->Zend Framework Project, preencher o campo nome com o nome do projeto e clicar em “Finish”. Basicamente o que a ferramenta faz é chamar o zend tool, que foi instalado juntamente com ela, e executar o mesmo comando do item anterior, mas dessa forma você não precisa saber absolutamente nada sobre linha de comando ou configuração de variáveis de sistema.

Manualmente

Para realizar a criação da estrutura manualmente você precisará criar toda a estrutura de pastas manualmente, conforme mostrado na figura 1 acima e alterar quatro arquivos, o primeiro deles o arquivoindex.php localizado no diretório public incluindo a seguinte seqüência de código:

<?php
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);

$application->bootstrap()
->run();

Esse é o arquivo que irá iniciar a sua aplicação,e basicamente o que ele faz é configurar onde estão todos os diretórios e arquivos necessários para iniciar sua aplicação, configurar o ambiente e iniciar a aplicação de fato.

O segundo é o arquivo bootstrap.php no diretório application com o seguinte código:

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

}

Esse arquivo é o arquivo de Bootstrap da aplicação, nele você poderá incluir basicamente tudo que for necessário para ser inciado juntamente com a aplicação.

Repare que em nenhum dos dois arquivos a tag PHP é fechada, isso é feito propositalmente para evitar o envio de informações para o navegador.

Além disso você deve alterar o arquivo application.ini dentro do diretório config com a seguinte informação:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

Esse é o arquivo de configuração da sua aplicação, ele prevê a existência de quatro tipos de ambientes distintos, o ambiente de desenvolvimento, teste, revisão e produção, variando exclusivamente no modo como eles exibirão as mensagens de erro do sistema.

Por último você deve criar (caso não exista) um arquivo chamado .htaccess no diretório public e incluir o seguinte conteúdo:

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

Esse arquivo é responsável por direcionar todas as requisições ao servidor naquele diretório e nos diretórios abaixo deles para o arquivo index.php exceto se essa requisição seja feita a um arquivo válido e existente em um desses diretórios, isso permite que você possa armazenar imagens, folhas de estilo, arquivos javascript, além de outros, dentro do diretório public e consiga acessá-los normalmente, mas que qualquer outra requisição, que não seja feita a algum desses arquivos, será enviada ao index.php para ser tratada.

Para que esse arquivo funcione e conseqüentemente o restante da sua aplicação, o seu servidor web deve estar configurado para aceitar module rewrite, caso não esteja, procure na documentação referente a ele como realizar essa configuração.

Conclusão

Como você pode perceber o objetivo desse artigo foi mostrar as diversas formas que existem de configurar os diretórios iniciais para se trabalhar com Zend Framework. Agora você deve escolher o que mais lhe agrada e se adapta com as ferramentas que você utiliza e pode começar a desenvolver suas aplicações com o framework.

Você pode baixar os arquivos usados nesse tutorial, você fará o download de um arquivo compactado contendo toda a estrutura de diretórios do Zend Framework juntamente com os arquivos que você criaria utilizando o processo manual e que são criados automaticamente pelos outros dois processos. Caso utilize esses arquivos ainda será necessário copiar a pasta Zend para dentro do diretório library que não foi incluída com esse arquivo.

Mensagem do anunciante:

A Mundipagg lança a inovadora API em REST, garantindo flexibilidade e simplicidade na integração. Conheça as nossas funcionalidades.

Paulo Eduardo Lima Rezende

é profissional da área de web, atuando nela profissionalmente desde 2005 com tecnologias como XHTML, CSS, Webstandards, PHP, JavaScript, Jquery, CodeIgniter, cursando atualmente faculdade de Sistemas de Informação na Unniversidade Anhembi Morumbi de São Paulo, Atuando. Mantém o blog pessoal (www.pauloeduardo.com) e a Psyco Media Development, empresa de desenvolvimento de Sistemas. http://www.pauloeduardo.com

7 comentários Comente também

  1. Muito bom o post..Se não fosse ele eu não teria conseguido utilizar pela primeira vez o Zend Framework…É uma coisa nova Espero aprender a utilizá-lo
    Só acho q tem um pequeno erro ai passei a noite toda aki e a página so dava um erro “500”

    Notei que a última linha da index.php tinha esse botstrap chamando o método rum.
    $application->bootstrap()->run();

    Acabei adicionando cegamente este método na classe BootStrap
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    public function run(){}
    }

    funcionou mas ainda estou com uma impressao que isto não é certo…gostaria que alguem me retornase algo…Obrigado

  2. É eu boiei…
    Esta mesmo errado
    Retirei o método da classe Bootstrap
    e verifiquei se o metodo existia..e obtive um retorno positivo.

    if( method_exists ($application->bootstrap(),’run’)) echo “Existe”;

    E agora? Me laskei?
    Alguem poderia me ajudar?
    Obrigado
    stivyw@gmail.com

  3. Povo inútil fazendo comentários inúteis. Se não tem nada pra comentar fecha a janela ou abre outra página, vai brincar de boneca sei la…
    Isso aqui é informação e copiado ou não está sendo muito útil !

  4. Realmente, estamos aqui pra tentar aprender algo…:) Paulo R. B. Rocha, já utilizo Code Igniter, mas meu objetivo seria aprendizado ao ZF. Muito obrigado pela ajuda.

Dê Sua Opinião

O seu endereço de email não será publicado Campos obrigatórios são marcados *


8 − = quatro

leia mais
Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: