Desmistificando o Framework da Zend

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

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 of Desmistificando o Framework da Zend

Page 1: Desmistificando o Framework da Zend

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

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

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

Vamos nos localizar?

O que é o um Framework?

Page 5: Desmistificando o Framework da Zend

Contextualização

Um framework completo?

Page 6: Desmistificando o Framework da Zend

Contextualização

Um biblioteca de componentes?

Page 7: Desmistificando o Framework da Zend

Contextualização

Ambos?

Page 8: Desmistificando o Framework da Zend

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

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

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

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

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

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
Page 15: Desmistificando o Framework da Zend

Por onde eu começo?

http://framework.zend.com

Page 16: Desmistificando o Framework da Zend

QuickStart

Zend_Tool

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

Page 17: Desmistificando o Framework da Zend

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

Crie um projeto

#unix% zf.zh create project quickstart

#dos/windowsC:> zf.bat create project quickstart

Page 19: Desmistificando o Framework da Zend

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

Configure seu virtual host

Page 21: Desmistificando o Framework da Zend

E a mágica é feita

Page 22: Desmistificando o Framework da Zend

Estrutura de diretórios

Page 23: Desmistificando o Framework da Zend

O Arquivo Bootstrap

Page 24: Desmistificando o Framework da Zend

Configure sua aplicação

Page 25: Desmistificando o Framework da Zend

O controlador padrão

Page 26: Desmistificando o Framework da Zend

O Controlador de erros

Page 27: Desmistificando o Framework da Zend

A View

Page 28: Desmistificando o Framework da Zend

A Error View

Page 29: Desmistificando o Framework da Zend

O .htaccess

Page 30: Desmistificando o Framework da Zend

index.php (O Ambiente)

Page 31: Desmistificando o Framework da Zend

O Modelo

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

Page 32: Desmistificando o Framework da Zend

O Modelo

Ok! Não existe um Zend_Model

ENTÃO NÃO PERGUNTE MAIS! OK?

Page 33: Desmistificando o Framework da Zend

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

O Modelo

O modelo nada mais são que suas classes;

Page 35: Desmistificando o Framework da Zend

O Modelo

Page 36: Desmistificando o Framework da Zend

O Modelo

Page 37: Desmistificando o Framework da Zend

O Modelo

Modelos normalmente são responsáveis por estados, metadados, condições...

Page 38: Desmistificando o Framework da Zend

O Modelo

Page 39: Desmistificando o Framework da Zend

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

O Modelo

Page 41: Desmistificando o Framework da Zend

O Modelo

Page 42: Desmistificando o Framework da Zend

Ainda sobre o Modelo

Zend_Db_Table - O Gateway

O Modelo Entidade Relacional para o Zend_Db

Page 43: Desmistificando o Framework da Zend

Ainda sobre o Modelo

Zend_Db_Table

Relacionamentos

Page 44: Desmistificando o Framework da Zend

Uma nota sobre dados

Dados !== Banco de Dados

Page 45: Desmistificando o Framework da Zend

Que mais

Sobre nomes e auto-carregamento

Sempre adote a técnica de prefixar seus desenvolvimentos

Page 46: Desmistificando o Framework da Zend

Dica!

Recursos também devem ser informados ao auto-carregador!

Page 47: Desmistificando o Framework da Zend

Dica!

Como usar a estrutura de diretórios com o auto-carregador

Page 48: Desmistificando o Framework da Zend

Vamos falar sobre camadas

As aplicações em geral, tem muitas camadas!

Page 49: Desmistificando o Framework da Zend

Vamos falar sobre camadas

Page 50: Desmistificando o Framework da Zend

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

Autenticação e Autorização

Zend_Authenticate_Adapter

Zend_Acl e Zend_Acl_Role

Page 52: Desmistificando o Framework da Zend

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

Exemplo

Page 54: Desmistificando o Framework da Zend

Agora vem os controladores

Controladores (“roteadores”)

Page 55: Desmistificando o Framework da Zend

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

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

Controladores

Page 58: Desmistificando o Framework da Zend

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

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

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

Criando um controlador com zf-tool

Page 62: Desmistificando o Framework da Zend

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

Views Helpers

HtmlList

HtmlFlash

HtmlObject

Json

Navigation

PaginationNavigator

Translate

Url

Page 64: Desmistificando o Framework da Zend

View Helpers

Placeholder helps

Page 65: Desmistificando o Framework da Zend

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

Sobre Decorators

Page 67: Desmistificando o Framework da Zend

Sobre Zend_Form

Decorators são plugins

Podem ser utilizados isoladamente

Overloading de decorators existentes

Page 68: Desmistificando o Framework da Zend

Sobre Zend_Form

Helpers de Zend_Form

FormButtons

FormChekBoxes

FormInputs

FormSelects

FormFile

Page 69: Desmistificando o Framework da Zend

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

Layout

Page 71: Desmistificando o Framework da Zend

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

Zend_Layout recomendações

Page 73: Desmistificando o Framework da Zend

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

Perguntas?

????????????