Desmistificando o Framework da Zend

Post on 04-Dec-2014

5.670 views 2 download

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

Por Domingos Teruel

Desmistificando o Framework da Zend

2.PHP Maranhão - São Luís - MAFevereiro-2009

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

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/windowsC:> 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 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, ...)

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”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()

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?

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