PHP - Zend Framework
Retirado de: http://felipetonello.com/blog/2007/02/28/zend-framework-para-um-php-mais-poderoso/
Esse tutorial tem como objetivo mostrar para as pessoas que nunca viram nada sobre o ZF(Zend Framework) e estão querendo saber como ele funciona.
Quem já ouviu falar do Zend Framework? Resumidamente a Zend é uma empresa responsável pela manutenção e desenvolvimento do PHP.
A engine de orientação a objetos do php5 foi totalmente reescrita pelo pessoal da Zend.
Mas o que seria um framework?
O framework é um conjunto de classes com objetivo de reutilização de um design, provendo um guia para uma solução de arquitetura em um domínio específico de software. (Wikipedia)
Pode-se dizer que ele seria um conjunto de bibliotecas específicas.
Falando nossa lingua, o framework é um conjuntão de bibliotecas que ajuda em nosso trabalho do dia a dia, e nos trabalhos mais complicados também.
Esse artigo utiliza a versão 0.8 do framework. (dia 28/02/07)
[atualizado]
Versão atual: 1.0.1 (01/08/07)
[/atualizado]
Entendendo o Zend Framework
O Zend Framework segue o padrão MVC - Model View Controller. É um padrão de arquitetura onde separa o GUI, templates, etc(View) da lógica(Model) e do controle(Controller).
Então nele você pode usar a mesma lógica e/ou controle em diversas interfaçes com o usuário.
Usando o Zend Framework
- Faça download dele no site oficial: http://framework.zend.com/download
- Descompacte o arquivo em qualquer pasta. Exemplo: tar zxvf ZendFramework-1.0.1.tar.gz -C ~/
Agora vamos arrumar a estrutura de diretórios necessária para o correto funcionamento do ZF.
PS: a pasta ZF-tutorial fica dentro do DocumentRoot, que é onde fica suas páginas no servidor(padrão do apache: htdocs/ ou /var/www/).
No caso a pasta controllers, models e views estão dentro da pasta app(application, nome sugestivo). publico é onde vai suas outras coisas normais como imagens e css, js e assim por diante. E lib é a pasta onde vai ficar o ZF.
Entre na pasta onde você descompactou o arquivo tarball(.tar.gz), depois entre na pasta library e copie a pasta zend para a sua pasta lib(na ZF-tutorial) do seu sistema. Talvez você precise mudar(ou copiar) como root, aqui no exemplo vou usar sem o root.
- cd ~/ZendFramework-1.0.1/library
- cp -Rfv Zend/ documentRoot_do_apache/ZF-tutorial/lib/
Aí depois no diretório lib irá ter lib/Zend, certo?
Configurando o Apache
Primeira coisa que temos a fazer é abilitar o módulo rewrite do apache.
Edite o arquivo de configuração do apache, httpd.conf.
Descomente(tirando o #) a linha onde está escrito:
- LoadModule rewrite_module modules/mod_rewrite.so
- AddModule mod_rewrite.c
Defina o AccessFileName (pode ser no final do arquivo):
- AccessFileName .htaccess
Setar a opção AllowOverride como All.
Trocar as linhas abaixo:
- #
- # Options Indexes FollowSymLinks
- # AllowOverride None
- #
por:
-
- Options FollowSymLinks Includes
- AllowOverride All
Criando o Bootstrapping
O controller do ZF, Zend_Controller, é feito para suportar websites com urls limpas.
Então, todas as requisições precisam ser feitas diretamente em um arquivo index.php, essa prática é conhecida como bootstrapping.
E para isso precisamos criar alguns arquivos .htaccess.
ZF-tutorial/.htaccess
- RewriteEngine on
- RewriteRule .* index.php
- php_flag magic_quotes_gpc off
- php_flag register_globals off
Essa RewriteRule quer dizer que para qualquer coisa escrita ele(apache) irá redirecionar para o index.php(que fica dentro do ZF-tutorial, calma que ainda vamos cria-lo).
Alí também setamos algumas configurações do PHP.ini. Essas configurações provavelmente já estão setadas como padrão, mas é bom ter certeza né. Elas só vão funcionar se estiver habilitado o mod_php no httpd.conf do apache.
Agora vamos setar nosso .htaccess na pasta público. Lá estará os arquivos JavaScript, CSS, imagens e assim por diante. Então vamos habilitar tudo por lá.
ZF-tutorial/publico/.htaccess
- RewriteEngine off
Agora na pasta app e no lib não queremos que nenhum intruso acesse, porque lá estão nossos arquivos preciosos.
ZF-tutorial/app/.htaccess
- deny from all
ZF-tutorial/lib/.htaccess
- deny from all
Esse esquema de bootstrapping é recomendação dos desenvolvedores do ZF, ok? Motivo de segurança, sabe como é né.
Criando o nosso index.php(bootstrap file)
Agora vamos criar nossa index.php na pasta ZF-tutorial.
ZF-tutorial/index.php
-
- error_reporting(E_ALL|E_STRICT); // para mostrar os erros, apenas nos testes(precisa estar setado no PHP.ini)
-
- // Seta o timezone pra são paulo (>=PHP 5.1)
- date_default_timezone_set(‘America/Sao_Paulo’);
-
- /* Seta include path para o funcionamento correto do framework ***OBRIGATÓRIO*** */
- .PATH_SEPARATOR.‘./app/models/’ //facilitar depois ao loadar as nossos modelos
-
- /* Necessário para loadar qualquer outra classe do framework ***OBRIGATÓRIO*** */
- include "Zend/Loader.php";
-
- //loada o controller front
- Zend_Loader::loadClass(‘Zend_Controller_Front’);
-
- /*
- Essa classe se encontra em Zend/Controller/Front.php
- Pode ser loadado diretamente pelo nome se preferir
-
- Para começar nós precisamos loadar primeiro o front controller
- Ele faz um controle automático para detectar a base URL e fazer o redirecionamento correto
- */
- $controlador = Zend_Controller_Front::getInstance();
- $controlador->throwExceptions(true); // mostrar excessões(apenas para testes)
- $controlador->setControllerDirectory(‘./app/controllers’); // seta diretório com nossos controllers
-
- //Roda o sistema
- $controlador->dispatch();
-
- //sem fechar a tag php
Note que agente não fecha a tag php para nos previnir de erros usando o header(), no caso de espaços em branco adicionais depois do ?>.
Agora na pasta controllers vamos criar um IndexController.php. Esse controller vai entrar em ação sempre que o index for chamado.
Para entender como funciona, precisamos saber como o Zend_Controller_Front trabalha.
O ZF usa um sistema de Controllers(Controladores) e Actions(Ações). E isso é setado diretamente na url(lembra do bootstrapping?). Como?
Usando o nosso exemplo, no formato http://localhost/ZF-tutorial/index/teste o index é o Controller e o teste é o Action. Outro exemplo, http://localhost/ZF-tutorial/foo/bar o foo é o Controller e o bar é o Action.
E quando você não coloca nada? Exemplo, http://localhost/ZF-tutorial/ o Zend_Controller_Front considera como index o Controller e index a Action.
O que vem depois é parâmetro, mas isso é assunto pra depois
Vamos fazer nosso IndexController então
ZF-tutorial/app/controllers/IndexController.php
-
- class IndexController extends Zend_Controller_Action
- {
- public function indexAction()
- {
- $this->view->titulo = ‘Primeiro Tutorial de Zend Framework’;
- $this->view->detalhe = ‘Olá Mundo!’;
- }
- }
0 Responses to PHP - Zend Framework
Something to say?