Hello Zend Framework
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:
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 = 0Criando .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.
<?
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.