Michel Candido

Hello Zend Framework

12/06/2010Posted by Michel Candido.

 
Antes de podermos investigar os componentes do Zend Framework em detalhes, precisamos nos localizar e a melhor forma de fazer isto é construindo uma aplicação simples que usa os componentes MVC. Para uma melhor aplicação PHP padrão, o código para mostrar o texto “Hello World” é formado por apenas uma linha em um arquivo:
<? echo ”Hello World”;
O Zend Framework precisa de varios arquivos para criar a base em cima da qual uma aplicação pode ser criada. Isso significa que o código de exemplo “Hello World” poderá parecer desnecessariamente longo ao definirmos o ambiente para a aplicação que veremos adiante. Antes veremos um pouco sobre os pradrões de design MVC.

Modelo-Visão-Controlador

Esta associado como um padrão de design. Um padrão de design de software é uma solução genérica padrão para um problema comum. Isto significa que, embora as implementações possam variar, os conceitos usados para resolver os problemas usando um determinado padrão serão os mesmos. Com o aumento da complexidade das aplicações desenvolvidas torna-se fundamental a separação entre os dados (Model) e o layout (View). Desta forma, alterações feitas no layout não afectam a manipulação de dados, e estes poderão ser reorganizados sem alterar o layout. Como funciona este padão? O MVC tem base em divisão de camadas. São projetos dentro de uma solução, e não são pastas dentro um projeto). As camadas do MVC são as seguintes:

View Camada interface do usuario, onde ficarão nossos arquivos .phtml. Controller Camada onde ficam nossas regras de nogocio, verificações, metodos e ações. Model Alguns dizem ser a camada de acesso aos dados, outros dizem ser a camada de negocios ( Neste caso onde o model é considerado outra camada de negocios, mais uma camada é criada, chamada de Persistência, onde no caso, faz acesso aos dados). Bom agora que ja vimos um pouco sobre o que é o MVC vamos ao que interessa, nossa primeira aplicação com Zend Framework.

Obtendo o Zend Framework

Para fazer o download do framework basta acessar o link abaixo, lembrando que sempre é bom obter a ultima versão, atualmente estou utilizando a versão 1.10.5 http://framework.zend.com/download/current/ Estrutura de pasta Utilizando o Zend Framework como base para desenvolvimento, é possivel 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 desejar. Para esta aplicação eu proponho a seguinte estrutura:

Atenção: Não criar o diretorio Source Files pois este diretorio é da IDE usada para desenvolvimento. Lembre-se de criar o projeto dentro da pasta htdocs do xampp.

Criando o Bootstrap.php
 <? class Bootstrap extends
Zend_Application_Bootstrap_Bootstrap{}
Criando o index.php
<?
        // Define path para o diretório de applicação
        defined('APPLICATION_PATH')
         || define('APPLICATION_PATH', realpath(dirname(__FILE__) .
'/application'));
        // Define ambiente de aplicação
        defined('APPLICATION_ENV')
        || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ?      
getenv('APPLICATION_ENV') : 'production'));
        // cetifica que a biblioteca esta no include path
        set_include_path(implode(PATH_SEPARATOR, array(
        realpath(APPLICATION_PATH . '/library'),
                        get_include_path(),
                )));
        /** Zend_Application */
        require_once 'Zend/Application.php';
        // Cria o objeto application, bootstrap, e inicia
        $application = new Zend_Application(
         APPLICATION_ENV,
        APPLICATION_PATH . '/configs/application.ini'
        );
        $application->bootstrap()->run();
Criando application.ini
[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
Criando .htacess
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^.*$ index.php [NC,L]
Atenção, o arquivo .htacess acima de ser colocado na raiz de sua aplicação. Criando o IndexController.php Os controllers criados devem sequir as seguintes regras;
  • Devem ser criados dentro da pasta application/controlles/
  • No nome de cadas controller a letra inicial deve ser maiuscula e as seguintes minúsculas. Ainda deve sempre terminar com a palavra Controller. Exemplo: IndexController.php, TestController.php
  • O arquivo deve conter uma classe com os mesmo nome do arquivo, estendendo da classe Zend_Controller_Action. Exemplo class Indexcontroller extends Zend_Controller_Action{}
  • Cada método da classe deve sempre começar com letras minúsculas. Ainda deve terminar com a palavra Action. Exemplo indexAction, testeAction.
O controller padrão do Zend Framework e IndexController a a action padrão é indexAction(). Seguindo estas regras vamos criar o nosso IndexController.
<?
        class IndexController extends Zend_Controller_Action{
                public function indexAction(){
                }
        }
Criando a view As views dos controllers são criadas dentro de application/views/scripts/. Como o nome do controller é IndexController será criado uma pasta que fará referência ao controller, esta pasta deveter o mesmo nome que o controller e deve conter apenas letras minúsculas. Exemplo;IndexController nossa pasta será index, TestController nossa pasta será test. Dentro as pasta index será criado um arquivo com extensão .phtml, este arquivo fara referência ao método indexAction e deve conter o mesmo nome. Exemplo indexAction() nosso arquivo será index.phtml, testAction nosso arquivo será test.phtml Seguindo o que foi dito criaremos nosso arquivo index.phtml.
<?
        echo 'Hello World';

Após fazer tudo o que foi dito acima abra seu navegador e digite http://localhost/HelloWorld Se aparecer a mensagem Hello World é porque tudo ocorreu perfeitamente.

Fontes

ROB, Allen; NICK, Lo; STEVEN Brown: zend framework em ação Starlin Alta Con. Com. LTDA 2009 16 p. Oficina da Net, MVC – O Padrão de Arquitetura de Software. Acedido em 12, junho 2010 em http://www.oficinadanet.com.br/artigo/1687/mvc_-_o_padrao_de_arquitetura_de_software Artigonal – Abordando Arquitetura MVC, E Design Patterns: Observer, Composite, Strategy. Acedido em 12, junho 2010 em http://www.artigonal.com/tecnologia-artigos/abordando-a-arquitetura-mvc-e-design-patterns-observer-composite-strategy-1017208.html Adriano Galesso Alves – Programação em N Camadas – MVC Padrões de Projeto – Parte 1. Acedido em 12, junho 2010 em http://lixeiradodri.blogspot.com/2009/08/programacao-em-nx-camadas-mvc-padroes