Zend Framework
Felipe Ferreri Tonello
Índice
PHP Zend Framework Instalação Configuração Desenvolvimento
PHP
Linguagem de programação de computadores interpretada
Livre Utilizada para gerar conteúdo dinâmico na
Web Fácil aprendizado Suporte a Orientação de Objetos(POO)
Aspectos negativos PHP
Repetição de códigos Layout e Lógica em mesmo arquivo Não existe padrão de programação Desenvolvimento lento de sistemas Díficil manutenção
O que é 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
conjunto de classes(bibliotecas) específicas Facilita nossa vida
O que é o ZF
Zend Framework é um simples, poderoso, open-source software framework para o PHP 5 designado a eliminar o tédio de códificar e dar foco ao “peixe grande”. Uma dessas facilidades é o uso do padrão Model-View-Controller(MVC), fazendo seu código ser mais limpo e facil de manutenção.
MVC
Model, View and Controller(Modelo, Visão e Controladores)
Separar o sistema em: Controllers: Controlam todo o sistema, entradas
e saida de dados, comunicação com BD e assim por diante
Viewers: São as saídas de dados, templates Models: Classes e componentes que o
desenvolvedor queira adaptar ao framework
Zend Framework
Segue o padrão MVC Mantido pela Zend Muito estável, realizado uma bateria de
testes Comunidade atíva, crescendo Wiki de desenvolvimento e propostas Licença segura para empresas(New BSD) Templates Validações
Requisitos para o ZF
>=PHP 5.1.4 (com o módulo pdo_mysql habilitado)
>=Apache HTTP Server 2.0(recomendado) Zend Framework 1.0.1 (versão atual) MySQL 5.0+, SQLite, PostgreSQL, ODBC e
AdoDB
Instalação
Fazer download no: http://framework.zend.com/download
Descompactar: tar zxvf ZendFramework-1.0.1.tar.gz -C ~/
Copiar a pastar Zend(dentro de library) para a sua pasta “lib”: cp -Rfv Zend/ documentRoot_do_apache/ZF-tutorial/lib/
Padrão de diretórios
Configuração do Apache
Habilitar o rewrite_module, descomentar(retirar o #) das linhas:
LoadModule rewrite_module modules/mod_rewrite.soAddModule mod_rewrite.c Definir o AccessFileName (pode ser no final
do arquivo):AccessFileName .htaccess Setar a opção AllowOverride como All:<directory>Options FollowSymLinks IncludesAllowOverride All</directory>
Criando o Bootstrapping
E para isso precisamos criar alguns arquivos .htaccess.
ZF-tutorial/.htaccess ZF-tutorial/publico/.htaccess ZF-tutorial/app/.htaccess ZF-tutorial/lib/.htaccess Esse esquema de bootstrapping é
recomendação dos desenvolvedores do ZF, ok? Motivo de segurança.
Criando o nosso index.php(bootstrap file)
ZF-tutorial/index.php<?phperror_reporting(E_ALL|E_STRICT); PHP.ini)
setlocale (LC_ALL, ‘pt_BR’);
date_default_timezone_set(‘America/Sao_Paulo’);
set_include_path(‘.’.PATH_SEPARATOR.‘./lib’.PATH_SEPARATOR.‘./app/models/’.PATH_SEPARATOR.get_include_path());
include "Zend/Loader.php";
Zend::loadClass(‘Zend_Controller_Front’);
$controlador = Zend_Controller_Front::getInstance();$controlador->throwExceptions(true);$controlador->setControllerDirectory(‘./app/controllers’);$controlador->dispatch();// sem fechar tag php ?>
Entendendo o Zend_Controller_Front
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.
Criando nosso IndexController.php
ZF-tutorial/app/controllers/IndexController.php<?phpclass IndexController extends Zend_Controller_Action{ public function indexAction() { $this->view->titulo = ‘Primeiro Tutorial de Zend Framework’; $this->view->detalhe = ‘Olá Mundo!’; }}
//sem fechar tag php ?> denovo
Padrão nos Controllers e Actions
Atenção: Sempre o controller deve levar esse padrão NomeController.php e a classe com o mesmo nome do arquivo. A primeira letra sempre em maiúsculo e o resto minúsculo.
Já os Actions também deve levar esse padrão nomeAction(), sempre minúsculo.
Criando nossos Views
Para criar, precisamos acessar a pasta scripts que está no ZF-tutorial/app/views/. Lá vamos criar uma pasta para cada Controller nosso, no nosso caso iremos criar uma pasta chamada index(por causa do IndexController). Todos os templates para o IndexController devem estar nessa pasta. O mais legal é que o nome do template leva o nome da action.
Criando nossos Views
ZF-tutorial/app/views/scripts/index/index.phtml<html><head> <title><?php echo $this->escape($this->titulo); ?></title></head><body> <?php echo $this->escape($this->detalhe); ?></body></html>
Agora vamos testar nossa aplicação.
Acesse o http://localhost/ZF-tutorial e depois tente http://localhost/ZF-tutorial/index/index
Deu na mesma? :)
Homework
Criar um zfAction(), no IndexController, com seu respectivo viewer.
http://localhost/ZF-tutorial/index/zf Iaí, deu certo?
Aplicação proposta
Foi solicitado de um site para agregar informações de uma imobiliária. Os admins poderiam vizualizar, acessar e editar a venda de imóveis. Os clientes poderiam cadastrar-se como interessados em algum imóvel
Aplicação proposta
Aplicação proposta
Atenção: Toda chave primária das tabelas devem levar o nome 'id'. Por pardão o ZF usa 'id', mas isso pode ser modificado posteriormente.
Aplicação proposta
Agora vamos desenvolver a aplicação prosta
Autor
Nome: Felipe Ferreri Tonello
4 anos de experiencia com PHP
Desenvolvimento com GNU/Linux
Artigos e tutoriais: felipetonello.com mxstudio.com.br webtutoriais.com gnulinuxbrasil.org