Desmistificando o
   Framework da Zend
       2.PHP Maranhão - São Luís - MA
              Fevereiro-2009

Po r Dom ingo s Te ruel
Agenda
Apresentação
O Zend Framework
Primeiros passos
Quickstart
Modelos

Camada de serviços (service layers)
Autenticação e Autorização
Zend_Form
Plugins

Controllers
Visão e Layouts
O Palestrante
Tecnólogo em Processamento de Dados especialista em
interfaces de sistemas

Atua no desenvolvimento e implementação de sistemas focado
em software livre
Trabalha com PHP desde 1999

Analista de software de ITI em LigthComm Tecnologia e
Serviços
Consultor em tecnologias móveis (BlackBerry)

Membro ativo das comunidades: PHP-MG, PHP-SC, PHP-SP,
ZF-BRASIL, WP-Brasil
Vamos nos localizar?



O que é o um Framework?
Contextualização



Um framework completo?
Contextualização



Um biblioteca de componentes?
Contextualização



Ambos?
O Zend Framework

Prover um framework de alta qualidade para o
de desenvolvimento de aplicações web

Seguindo o espírito PHP, o ZF dispões de
poderosas funcionalidades que podem ser
facilmente implementadas pelos
desenvolvedores, com foco nos desafios da
construção de uma aplicação moderna e segura.
Visão Geral
Framework “Self-service”, use somente o necessário
para sua aplicação;
Tenha liberdade para integrar com outras
ferramentas/frameworks;
Fracamente acoplado;

PHP 5;
Incorpora tendências da web moderna
(webservices, ajax, xml, etc);
Visão Geral

Acordo de licença requerido para aqueles que
querem contribuir com código, atualizações,
documentações, etc;

Está sob a licença new BSD;

Certificação Oficial (Zend Certified Engenier -
Zend Framework);

Ativamente mantindo pela Zend e pela
comunidade
Visão Geral

Você confia em algo sem documentação?

 Documentação

 Estabilidade

 Todos componentes rigorosamente testados

 Todos componentes devem estar
 documentados pelos desenvolvedores com caso
 de uso
Em Resumo
Simplicidade

Toda parte dos bits, está desenvolvida, testada e
documentada

Possui componentes para a maioria das atividades
rotineiras do desenvolvimento web

Projeto Moderno, Orientação Objeto, Design Patterns

Completa documentação e de fácil acesso

Foco na regra de negócio
Em Resumo
É um framework e não só um conjunto de
componentes;

“Cola”, para construção de aplicações;

Alta Produtividade;

Use somente o que precisar, mas lembre-se

Ele sempre será distribuído em sua totalidade e ainda

Possui integração com outras ferramentas (pear, dojo,
jquery, smarty, etc)
Por onde eu começo?

 http://framework.zend.com
QuickStart



Zend_Tool

 Como começar a usa-lo e amar o Zend_Tool
QuickStart

localize o utilitário zf

  Em bin/zf.sh ou bin/zf.bat (Dependendo do seu SO)

  Adicione em seu Path o diretório bin da instalação
  do ZF ou crie um alias

    alias zf=/caminho/para/zf/bin/zf.sh

    Ou ainda use a PEAR

       pear.zfcampus.org PEAR Channel
Crie um projeto


#unix
% zf.zh create project quickstart

#dos/windows
C:> zf.bat create project quickstart
Adicione o ZF ao projeto


Link simbólico

 ln -s /caminho/ZendFramework/library

Ou copie

 copy -R /caminho/ZendFramework/library
Configure seu virtual host
E a mágica é feita
Estrutura de diretórios
O Arquivo Bootstrap
Configure sua aplicação
O controlador padrão
O Controlador de erros
A View
A Error View
O .htaccess
index.php (O Ambiente)
O Modelo



Ou, “O desenvolvedor desenvolve suas classes de
acordo da necessidade”
O Modelo


Ok! Não existe um Zend_Model



ENTÃO NÃO PERGUNTE MAIS! OK?
O Modelo

Não amarre seus modelos ao acesso a dados

 Torna os testes mais difíceis

 Para usar cache ou SOA, a refatoração pode ser
 mais difícil;

 Re-estruturar o banco de dados pode se
 quebrar facilmente
O Modelo



O modelo nada mais são que suas classes;
O Modelo
O Modelo
O Modelo



Modelos normalmente são responsáveis por
estados, metadados, condições...
O Modelo
O Modelo
Persista seus modelos

Defina seu banco de dados;

Fale para sua aplicação sobre seu banco de dados
O Modelo
O Modelo
Ainda sobre o Modelo
Zend_Db_Table - O Gateway

 O Modelo Entidade Relacional para o Zend_Db
Ainda sobre o Modelo
Zend_Db_Table

 Relacionamentos
Uma nota sobre dados



Dados !== Banco de Dados
Que mais
Sobre nomes e auto-carregamento

Sempre adote a técnica de prefixar seus
desenvolvimentos
Dica!
Recursos também devem ser informados ao
auto-carregador!
Dica!
Como usar a estrutura de diretórios com o auto-
carregador
Vamos falar sobre camadas
As aplicações em geral, tem muitas camadas!
Vamos falar sobre camadas
Autenticação e Autorização
Autenticação é a ação de verificar que alguém é
quem diz ser!

Autorização é a ação de determinar se alguém
pode acessar ou requerer um dado recurso.
Autenticação e Autorização
Zend_Authenticate_Adapter

Zend_Acl e Zend_Acl_Role
Uma palavrinha sobre
         Plugins
Agregue prefixos = define os caminhos
Zend_Validade => Zend/Validate

Use suas classes sem os prefixos
$class = $loader->load(“StringTrim”);
//Zend_Validate_StringTrim

Plugins podem ser utilizados em muitos
componentes (Zend_BootStrap, Zend_View,
Zend_Amf_Server, ...)
Exemplo
Agora vem os controladores



Controladores (“roteadores”)
Controladores
É quem realmente trabalha!

 Em outras palavras:

   Os controladores, recebe a requisição, roteia,
   chamada para controladores de ação, pos-
   requisição, envia retorno.
Compõe o controlador
Zend_Controller_Front

Zend_Controller_Plugin

Zend_Controller_Router

Zend_Controller_Dispatcher

Zend_Controller_Action_Helper

...
Controladores
Usando o Controlador
Uma classe “nomeControlador”Controller
Não esqueça do prefixo da app
Foo_BarController

 Atenção ao detalhe:
 FooBarController na url é foo-bar!

Métodos de ações

 “minhaAcao”Action()
E mais controlador
Detalhes do controlador

 $view é a propriedade utilizada pelo objeto
 para acessar os recursos disponibilizados pelo
 controlador

 getRequest e getResponse te da o poder de
 acessar dados do ambiente da aplicação
 (request/response)
Mais controlador
viewRenderer

 Injeta os objetos da aplicação para acesso das
 views, redenrizado no postDispatch()

 Resolução simples da viewscript

   <controller>/<action>.phtml
Criando um controlador com
          zf-tool
Views
PHP como linguagem de templates

 Zend_View

 Variáveis em views são objetos

 “$this” é um objeto de view
Views Helpers
HtmlList
HtmlFlash

HtmlObject
Json

Navigation

PaginationNavigator
Translate

Url
View Helpers



Placeholder helps
Uma palavrinha sobre
       Zend_Form
Sobre Decorators
 Tipicamente “Decorators” é um wrap funcional de
 um objeto que te da poder para modificar seu
 estado
 Alternativa um “decorator” pode ser utilizado
 para criar uma representação de um objeto

 No Zend_Form, “decorator” é utilizado como
 metados dos formulários e elementos para
 representação destes
Sobre Decorators
Sobre Zend_Form
Decorators são plugins

Podem ser utilizados isoladamente

Overloading de decorators existentes
Sobre Zend_Form
Helpers de Zend_Form

 FormButtons

 FormChekBoxes

 FormInputs

 FormSelects

 FormFile
Layout
Zend_Layout implementa dois patterns:

 CompositeView

 TwoStepView

Internamente implementamos um front-
controller com seus plugins, actions, helpers,
views
Layout
Zend_Layout
          recomendações
Seus views scripts devem ser concisos!

Trabalhe com seu layout a partir das views e nao
de seus controllers

Use o conceito de placeholder sempre que
possível

Configure seu layout em seu arquivo bootstrap
Zend_Layout
recomendações
Conclusões e recomendações
Foque seu tempo de desenvolvimento no
domínio do seu modelo e no “service layers”

Use os componentes do Zend Framework com
sabedoria

Concentre seus esforços na camada de negócios
no topo de seu trabalho

Leia a documentação, contribua, reporte bugs...
Perguntas?



????????????
Obrigado!


http://meadiciona.com/mingomax

http://www.twitter.com/mingomax

fale@dteruel.com.br

Desmistificando o Framework da Zend