desmistificando o framework da zend
DESCRIPTION
Desmistificando o framework da Zend, foi ministrado no 2.PHP Maranhão, encontro anual dos usuários PHP do estado do Maranhão. O Objetivo desta palestra e dar dicas sobre como começar e quais componentes estudar para então começar a desenvolver aplicações com esse poderoso framework que é mais simples do que parece.TRANSCRIPT
![Page 1: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/1.jpg)
Por Domingos Teruel
Desmistificando o Framework da Zend
2.PHP Maranhão - São Luís - MAFevereiro-2009
![Page 2: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/2.jpg)
AgendaApresentaçã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
![Page 3: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/3.jpg)
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
![Page 4: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/4.jpg)
Vamos nos localizar?
O que é o um Framework?
![Page 5: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/5.jpg)
Contextualização
Um framework completo?
![Page 6: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/6.jpg)
Contextualização
Um biblioteca de componentes?
![Page 7: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/7.jpg)
Contextualização
Ambos?
![Page 8: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/8.jpg)
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.
![Page 9: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/9.jpg)
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);
![Page 10: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/10.jpg)
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
![Page 11: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/11.jpg)
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
![Page 12: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/12.jpg)
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
![Page 13: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/13.jpg)
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)
![Page 14: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/14.jpg)
![Page 16: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/16.jpg)
QuickStart
Zend_Tool
Como começar a usa-lo e amar o Zend_Tool
![Page 17: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/17.jpg)
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
![Page 18: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/18.jpg)
Crie um projeto
#unix% zf.zh create project quickstart
#dos/windowsC:> zf.bat create project quickstart
![Page 19: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/19.jpg)
Adicione o ZF ao projeto
Link simbólico
ln -s /caminho/ZendFramework/library
Ou copie
copy -R /caminho/ZendFramework/library
![Page 20: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/20.jpg)
Configure seu virtual host
![Page 21: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/21.jpg)
E a mágica é feita
![Page 22: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/22.jpg)
Estrutura de diretórios
![Page 23: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/23.jpg)
O Arquivo Bootstrap
![Page 24: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/24.jpg)
Configure sua aplicação
![Page 25: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/25.jpg)
O controlador padrão
![Page 26: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/26.jpg)
O Controlador de erros
![Page 27: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/27.jpg)
A View
![Page 28: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/28.jpg)
A Error View
![Page 29: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/29.jpg)
O .htaccess
![Page 30: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/30.jpg)
index.php (O Ambiente)
![Page 31: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/31.jpg)
O Modelo
Ou, “O desenvolvedor desenvolve suas classes de acordo da necessidade”
![Page 32: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/32.jpg)
O Modelo
Ok! Não existe um Zend_Model
ENTÃO NÃO PERGUNTE MAIS! OK?
![Page 33: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/33.jpg)
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
![Page 34: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/34.jpg)
O Modelo
O modelo nada mais são que suas classes;
![Page 35: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/35.jpg)
O Modelo
![Page 36: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/36.jpg)
O Modelo
![Page 37: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/37.jpg)
O Modelo
Modelos normalmente são responsáveis por estados, metadados, condições...
![Page 38: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/38.jpg)
O Modelo
![Page 39: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/39.jpg)
O Modelo
Persista seus modelos
Defina seu banco de dados;
Fale para sua aplicação sobre seu banco de dados
![Page 40: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/40.jpg)
O Modelo
![Page 41: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/41.jpg)
O Modelo
![Page 42: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/42.jpg)
Ainda sobre o Modelo
Zend_Db_Table - O Gateway
O Modelo Entidade Relacional para o Zend_Db
![Page 43: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/43.jpg)
Ainda sobre o Modelo
Zend_Db_Table
Relacionamentos
![Page 44: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/44.jpg)
Uma nota sobre dados
Dados !== Banco de Dados
![Page 45: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/45.jpg)
Que mais
Sobre nomes e auto-carregamento
Sempre adote a técnica de prefixar seus desenvolvimentos
![Page 46: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/46.jpg)
Dica!
Recursos também devem ser informados ao auto-carregador!
![Page 47: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/47.jpg)
Dica!
Como usar a estrutura de diretórios com o auto-carregador
![Page 48: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/48.jpg)
Vamos falar sobre camadas
As aplicações em geral, tem muitas camadas!
![Page 49: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/49.jpg)
Vamos falar sobre camadas
![Page 50: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/50.jpg)
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.
![Page 51: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/51.jpg)
Autenticação e Autorização
Zend_Authenticate_Adapter
Zend_Acl e Zend_Acl_Role
![Page 52: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/52.jpg)
Uma palavrinha sobre Plugins
Agregue prefixos = define os caminhosZend_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, ...)
![Page 53: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/53.jpg)
Exemplo
![Page 54: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/54.jpg)
Agora vem os controladores
Controladores (“roteadores”)
![Page 55: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/55.jpg)
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.
![Page 56: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/56.jpg)
Compõe o controlador
Zend_Controller_Front
Zend_Controller_Plugin
Zend_Controller_Router
Zend_Controller_Dispatcher
Zend_Controller_Action_Helper
...
![Page 57: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/57.jpg)
Controladores
![Page 58: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/58.jpg)
Usando o Controlador
Uma classe “nomeControlador”ControllerNão esqueça do prefixo da appFoo_BarController
Atenção ao detalhe:FooBarController na url é foo-bar!
Métodos de ações
“minhaAcao”Action()
![Page 59: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/59.jpg)
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)
![Page 60: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/60.jpg)
Mais controlador
viewRenderer
Injeta os objetos da aplicação para acesso das views, redenrizado no postDispatch()
Resolução simples da viewscript
<controller>/<action>.phtml
![Page 61: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/61.jpg)
Criando um controlador com zf-tool
![Page 62: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/62.jpg)
Views
PHP como linguagem de templates
Zend_View
Variáveis em views são objetos
“$this” é um objeto de view
![Page 63: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/63.jpg)
Views Helpers
HtmlList
HtmlFlash
HtmlObject
Json
Navigation
PaginationNavigator
Translate
Url
![Page 64: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/64.jpg)
View Helpers
Placeholder helps
![Page 65: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/65.jpg)
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
![Page 66: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/66.jpg)
Sobre Decorators
![Page 67: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/67.jpg)
Sobre Zend_Form
Decorators são plugins
Podem ser utilizados isoladamente
Overloading de decorators existentes
![Page 68: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/68.jpg)
Sobre Zend_Form
Helpers de Zend_Form
FormButtons
FormChekBoxes
FormInputs
FormSelects
FormFile
![Page 69: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/69.jpg)
Layout
Zend_Layout implementa dois patterns:
CompositeView
TwoStepView
Internamente implementamos um front-controller com seus plugins, actions, helpers, views
![Page 70: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/70.jpg)
Layout
![Page 71: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/71.jpg)
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
![Page 72: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/72.jpg)
Zend_Layout recomendações
![Page 73: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/73.jpg)
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...
![Page 74: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/74.jpg)
Perguntas?
????????????
![Page 75: Desmistificando o Framework da Zend](https://reader037.vdocuments.com.br/reader037/viewer/2022102618/547f6182b4af9f282e8b4600/html5/thumbnails/75.jpg)
Obrigado!
http://meadiciona.com/mingomax
http://www.twitter.com/mingomax