06 February 2012

Fabio Farias

Informações e Tecnologias de maneira rápida e facil.

O que é Zend Framework?

Publicado por Fabio Farias Em 25 - maio - 2010 Comentários desativados

Essa semana aprenderemos um pouco sobre frameworks PHP, basicamente sobre o Zend Framework. Como todos devem saber, a ZEND é uma empresa fundada em 1999 por Andi Gutmans e Zeev Suraski e é a responsável pela manutenção e desenvolvimento de produtos e serviços para a linguagem PHP.

O Zend Framework foi lançado no dia 04 de março de 2006 e inclui diferentes componentes desenvolvidos em PHP5 para prover alta qualidade para desenvolvimento de aplicações web e web services.

http://framework.zend.com/

Mas o que seria um 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.

Qual a diferença entre biblioteca de classes e framework?

O framework se diferencia pois a biblioteca de classes se concentra em apenas oferecer implementação de funcionalidades, sem definir a reutilização de uma solução de arquitetura (design).

O Zend Framework segue o padrão MVC – Model View Controller ou Modelo-Visão-Controlador que é um padrão de arquitetura de aplicações que visa separar a lógica da aplicação (Model), da interface do Usuário (View) e do fluxo da aplicação (Controller). Permite que a mesma lógica de negócios possa ser acessada e visualizada por várias interfaces.

130_2.gif
Componentes do Zend Framework

Zend_Controller e Zend_View
Zend_Controller fornece os alicerces para a construção de websites baseados no MVC.
Zend_View separa o script de visualização dos controladores e modelos.

Zend_Config
Simplifica o uso de dados de configuração para aplicações web.

Zend_Db
Componente que provê acesso a banco de dados. Adicionalmente, ele ajuda a proteger suas consultas contra ataques de SQL Injection.

Zend_Fed
Componente que auxilia a geração de dados RSS e Atom para feeds.

Zend_Http_Cliente
Componente para o desenvolvimento de CLIENTES web services.

Zend_Filter_Input
Componente para filtragem e validação de campos de entrada.

Zend_Json
Componente que transforma estruturas PHP em JSON – JavaScript Object Notation (http://www.json.org/) para uso em aplicações com AJAX.

Zend_Log
Componente utilizado para geração de log de erros.

Zend_Mail e Zend_Mime
Componente para envio de email com suporte a anexos de todos os MIMES suportados.

Zend_PDF
Componente para criação e alteração de documentos PDF.

Zend_Search_Lucene
Para que não conhece o Lucene é uma software de busca e uma API de indexação de documentos escritos na linguagem Java e é mantido pela Apache Software Foundation (http://lucene.apache.org/java/docs/). O Zend_Search_Lucene é um componente do Lucene totalmente escrito em PHP 5.

Zend_XMLRpc
Componente para chamada remota de procedimentos. O SOAP é um padrão de RPC para WebServices.

Configuração do Zend Framework

01. Faça o dowload do Zend Framework no site: http://framework.zend.com
02. Descompacte-o numa pasta um nível abaixo do DocumentRoot do Apache.
03. Renomeie a pasta para zf.

Apache

A primeira coisa a fazer é configurar o Apache a trabalhar no mod_rewrite que terá a responsabilidade de redirecionar todas as requisições para um arquivo chamado index.php

http.conf – Apache (Windows)

Tirar o # (jogo da velha etc…) do início da linha:
LoadModule rewrite_module modules/mod_rewrite.so

Definir o nosso arquivo htaccess
AccessFileName .htaccess

Trocar as linhas abaixo:
#<Directory />
# Options Indexes FollowSymLinks
# AllowOverride None
#</Directory>

por:
<Directory />
Options FollowSymLinks Includes
AllowOverride All
</Directory>

Arquivo .htaccess
Crie um arquivo .htacess e salve no DocumentRoot do servidor Apache. No meu caso é c:/pagina.

RewriteEngine on
RewriteBase /
RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php
php_flag magic_quotes_gpc off
php_value include_path “c:/zf/library”

Todas as requisições que não contiverem uma das extensões de arquivo listadas serão passadas para index.php

Restartar o Apache.

Estrutura da nossa aplicação de exemplo

c:/pagina (document_root do servidor apache)
.htaccess
index.php
c:/framework (aplicações que utilizam framework)
/exemplo01
/controllers
IndexController.php
/views
hello.php
/models
c:/zf/library (bliblioteca do zend framework)

Como você pode ver acima, a pasta que contém o nosso exemplo de framework, bem como a biblioteca do framework, encontra-se fora do DocumentRoot do Apache pois é uma recomendação da Zend devido a segurança.

Exemplo 01 – Hello World!

Vamos desenvolver o nosso primeiro exemplo utilizando o Zend Framework. Faremos o famoso Hello World!

Arquivo index.php

O arquivo index.php deverá ser salvo no DocumentRoot do Apache e será o responsável por inicializar o Zend_Controller_Front.

Nesse arquivo, teremos também o Zend_View para chamar a nossa aplicação.

<?
include ‘Zend.php’;

Zend::loadClass(‘Zend_Controller_Front’);
Zend::loadClass(‘Zend_View’);

$view = new Zend_View;
$view->addScriptPath(‘c:/framework/exemplo01/views’);
Zend::register(‘view’, $view);

$controller = Zend_Controller_Front::getInstance();
$controller->setControllerDirectory(‘c:/framework/exemplo01/controllers’);
$controller->dispatch();
?>

Criando o indexController.php

Este arquivo deve ser criado na pasta controllers da sua aplicação.

<?php
class indexController extends Zend_Controller_Action {
public function indexAction()
{
$view = Zend::registry(‘view’);
$view->title = ‘iMasters – Júlio César Martini’;
$view->body = ‘Hello, World!’;
echo $view->render(‘hello.php’);
}
public function noRouteAction() {
$this->_redirect(‘/’);
}
}
?>

Criando o hello.php

Este arquivo deve ser criado na pasta views da sua aplicação.

<html>
<head>
<title><?php echo $this->escape($this->title); ?></title>
</head>
<body>
<?php echo $this->escape($this->body); ?>
</body>
</html>