mvc com zend framework - php conference brasil 2010

66
MVC com Zend Framework Flávio Gomes da Silva Lisboa @fgsl www.fgsl.eti.br @fgsl A reprodução é livre, apenas cite a fonte Mickey, Donald Duck & Goofy by Walt Disney

Upload: flavio-lisboa

Post on 26-May-2015

980 views

Category:

Documents


3 download

DESCRIPTION

Apresentação feita na 5ª PHP Conference Brasil

TRANSCRIPT

Page 1: MVC com Zend Framework - PHP Conference Brasil 2010

MVC com Zend Framework

Flávio Gomes da Silva Lisboa@fgsl

www.fgsl.eti.br

@fgsl

A reprodução é livre, apenas cite a fonte

Mickey, Donald Duck & Goofy by Walt Disney

Page 2: MVC com Zend Framework - PHP Conference Brasil 2010

Quem sou eu

2007

2008 2009

A reprodução é livre, apenas cite a fonte

@fgsl

Page 3: MVC com Zend Framework - PHP Conference Brasil 2010

Aplicações...

A reprodução é livre, apenas cite a fonte

@fgsl

serventedepedreiro2.blogspot.com

Page 4: MVC com Zend Framework - PHP Conference Brasil 2010

Aplicações...Web

A reprodução é livre, apenas cite a fonte

@fgsl

adrformacion.com

tareadeinformatica-julia.blogspot.com

altecnet.com.br

freecoloringsheets.net

Page 5: MVC com Zend Framework - PHP Conference Brasil 2010

Momento Cultural

A reprodução é livre, apenas cite a fonte

@fgsl

Page 6: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Aplicações são como cebolas...

Shrek by Dreamworks

Cebolinha by Maurício de Sousa

hortifrutibrasil.blogspot.com

Page 7: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

… elas têm camadas!

mais-objetiva.blogspot.com

Page 8: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Mas pra quê camadas?

manequim.abril.com.br

copacabanadetoledo.blogger.com.br

Page 9: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

O que são camadas?

Martin Fowler

camadas são “os subsistemas principais no software dispostos de forma parecida com camadas de um bolo, em que cada camada repousa sobre uma camada mais baixa”

Page 10: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Vantagens de usar camadas

►Compreensão de uma única camada como um todo coerente sem necessidade de saber muito sobre as demais camadas.

►Uma camada pode ser substituída por implementações alternativas dos mesmos serviços básicos.

►O uso de camadas diminui a dependência entre as partes de um sistema

►Camadas são bons lugares para definir padrões.

►Uma vez construída, uma camada pode ser usada por muitos serviços de nível mais alto.

Page 11: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Camadas de uma aplicação

Recursos Externos

Objetos de acesso a dados

Mapeadores, repositóriose scritps de transação

Modelos de domínioe Entidades

Controle de fluxoda aplicação

Apresentaçãoou exposição de serviço

Page 12: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

E pra quê tudo isso?

Porque só existe uma certeza no mundo do software...

Page 13: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

O cliente vai pedir alterações...

Eu te amo, você é perfeito... ...mas quero que você mude.

Fonte: http://2.bp.blogspot.com/_UM47dm0ECOE/SK1mPgTEzaI/AAAAAAAAAo8/yf2scl7XEQ4/s400/amor+meu+grande+amor.jpg

Page 14: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

O cliente vai pedir mais alterações...

Mas fizemos um sistema que funciona, o cliente disse que estava ótimo... e agora temos que fazer

mais alterações?

Fonte: http://galeria.brfoto.com.br/data/1/choro_sem_cor.jpg

Page 15: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

RESISTIR É INÚTIL!

Page 16: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

RESISTIR É INÚTIL!

Page 17: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

RESISTIR É INÚTIL!

Page 18: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

RESISTIR É INÚTIL!

Se a mudança é a única certeza, a questão é:Como mudar da melhor forma possível?

matutando.com

Page 19: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Melhor mudança

●Custa pouco●Leva menos tempo●Cria o menor impacto na aplicação

Fonte: http://aliceprina.files.wordpress.com/2007/09/mudanca-web2.jpg

Page 20: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Práticas que dificultam mudanças

Criação de objetos pela especificação explícita de uma classe.

Dependências de uma plataforma de hardware e software específica.

Dependência de algoritmos específicos.

Acoplamento forte de classes.

Page 21: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Tempo

Algo que você já não temAlgo que você cada dia tem menos

taocentro.blogspot.com

oitopassos.com

Page 22: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Complexidade

Algo que só tende a aumentar

Page 23: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Por isso, não invente!

eladioebruna.blogspot.com

Page 24: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Reuse!

mosaico.blogs.ie

dvdnear.com

produto.mercadolivre.com.br

19371973

Page 25: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Reuse!

He-Man, Skeletor and Battle Cat by Mattel

De novo essa

cena?

Page 26: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Reuse!

ivancarlo.blogspot.com fortressofbaileytude.com

John Byrne - 1980 George Pérez - 1985

Page 27: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Reuse!

http://www.coverbrowser.com/top/cool

John Buscema - 1968 John Byrne - 1989

Page 28: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Reuse!

http://www.interney.net/blogs/melhoresdomundo/2008/05/21/alex_ross_chupinha_de_novo

Capas de John Byrne

Page 29: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Reutilização

“O movimento para o desenvolvimento baseado em reuso foi uma resposta às demandas por menores

custos de produção e manutenção de software, entregas mais rápidas de

sistemas e aumento da qualidade do software”.

Ian Sommerville

Page 30: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

De código

De desenho

010101011101101010101111010010110110010101010110101110101010101001011111010110101010110101010000011111001011111010000110101010101011110010101010100011101010101010101110001110101010101010101010110101010101011111

Nononononnonnonono

nononno

Tipos de Reutilização

Page 31: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Tipos de Reutilização

De objetos, quando módulos de código binário de interface padronizada são reaproveitados;

De classes, o reaproveitamento de classes fundamentais e bibliotecas-padrão;

De plataformas, que se refere ao reaproveitamento de camadas inteiras da arquitetura de uma aplicação.

Page 32: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Padrões

“Padrões para componentes reusáveis facilitam o reuso”

Page 33: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Padrões

“Padrão é uma maneira de fazer algo, ou de buscar um objetivo. Em qualquer atividade que já esteja madura ou em vias de amadurecer, encontraremos métodos eficazes comuns para atingir objetivos e para resolver problemas em vários contextos”

Steven John Metsker

Page 34: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

Padrões

Reduzem a complexidade, fornecendo abstrações prontas;

Reduzem os erros, institucionalizando os detalhes de soluções comuns;

Fornecem valor heurístico, sugerindo alternativas de design;

Otimizam a comunicação, movendo o diálogo do projeto para um nível mais alto.

Steve McConnell

Page 35: MVC com Zend Framework - PHP Conference Brasil 2010

@fgsl

A reprodução é livre, apenas cite a fonte

MVC é um padrão de projeto

symfony-project.org

Mas as camadas não tem que estar uma em cima da

outra?

Não necessariamente.

Page 36: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

MVC é só a ponta do iceberg...

Recursos Externos

Objetos de acesso a dados

Mapeadores, repositóriose scritps de transação

Modelos de domínioe Entidades

Controle de fluxoda aplicação

Apresentaçãoou exposição de serviço

M

CV

Page 37: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Não se engane com a figura!

Não tem só 1 modelo, 1 visão e 1 controlador.

Page 38: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Tem mais coisa!

N

N

N

Page 39: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Uma aplicação tem vários problemas...

...por isso precisa de vários padrões de projeto

Justile League of America, by DC Comics

Page 40: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Software Baseado em Padrão

Para viabilizar o projeto de software baseado em padrão, “pode ser necessário fornecer uma infraestrutura do esqueleto de implementação específica, chamada de arcabouço (framework)”.

Roger S. Pressman

Page 41: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Framework

“O framework dita a arquitetura de sua aplicação. Ele irá definir a estrutura geral, sua divisão em classes e objetos e em consequência as responsabilidades-chave das classes de objetos, como estas colaboram, e o fluxo de controle. Um framework predefine esses parâmetros de projeto, de maneira que o projetista ou implementador da aplicação, possa se concentrar nos aspectos específicos da mesma”.

(Gangue dos Quatro)

Royal Flush Gang, by DC Comics

Gangue dos Quatro

Page 42: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Inversão de Controle

Page 43: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Inversão de Controle

A inversão de controle estabelece a diferença entre toolkits ou bibliotecas de sub-rotinas e frameworks. Nas primeiras, o desenvolvedor escreve o corpo principal da aplicação e chama o código que quer reutilizar. No último, o desenvolvedor reutiliza o corpo principal e escreve o código que o framework chama.

Page 44: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Criação de objetos de forma indireta.

Não depende de uma plataforma de hardware e software específica (é PHP né? Dooh!).

Não depende de suas próprias implementações.

Acoplamento fraco de classes.

Page 45: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

desciclopedia.org

ZendDb

ZendService

ZendSoap

ZendRest

ZendXmlRpc

ZendController

Page

ZendController

Front

Controller, Marvel Comics

ZendView

ZendLayout

Vision, Marvel Comics

Page 46: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

ZendController

Front

ZendApplication

ZendConfig

Ini

Xml

Boostrap Inicialização

Configuração

Page 47: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

ZendTool

Geração de código

Page 48: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Além do MVC...►Action Helpers►View Helpers►Plugins►ViewRenderer►Router

Spiderman, Marvel Comics

Doctor Strange, Marvel Comics

Page 49: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Banco de Dados►Zend_Db: Abstração da conexão com o banco►Zend_Db_Statement: Consultas armazenadas►Zend_Db_Select: SQL orientada a objeto►Zend_Db_Table: Padrões Data Row Gateway, Data Table Gateway, Data Mapper e Active Record.

vamoganhargalo.blogspot.comoculistasoloptica.com

Page 50: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Segurança►Zend_Acl: Controle de Acesso►Zend_Auth, Zend_Oauth e Zend_OpenId: Autenticação►Zend_Filter: Conversores de dados►Zend_Captcha: Anti-robô►Zend_Log:Auditoria►Zend_Validate: Regras de validação

bahianoticias.com.br

Page 51: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Diagnóstico e Manutenção►Zend_Debug►Zend_Log

antigo.campinas.sp.gov.br

Page 52: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Formulários Dinâmicos►Zend_FormSuporte a filtros, validadores, grupos, subformulários, configuração por arquivo e internacionalização.

Superman & Flash, DC Comicses.gov.br

Page 53: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Infraestrutura►Zend_Config: Configuração por arquivos INI ou XML►Zend_Exception: Exceção padrão►Zend_Loader: Carregamento de classes e arquivos►Zend_Registry: Variáveis globais►Zend_Session: Controle da sessão►Zend_Version: Adivinhe...

blogisticanoticias.blogspot.com

Page 54: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Performance►Zend_Cache►Zend_Config►Zend_Loader►Zend_Memory

brickset.com

Page 55: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Internacionalização►Zend_Date ►Zend_Currency►Zend_Locale►Zend_Translate

blogalize.net

Page 56: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

E-mail►Zend_Mail

frutobrasil.com.br

Page 57: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Sistema de Busca►Zend_Search_Lucene

baseado em

Page 58: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Integração com Flash Player

►Zend_Amf

Page 59: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Integração com Dojo Toolkit

►Zend_Dojo

Page 60: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Integração com JQuery►ZendX_JQuery

Page 61: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Integração com PHPUnit►Zend_Test

blog.censanet.com.brkavorka.wordpress.com

Page 62: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Computação em Nuvem

Zend_Cloud

Zend_Service

kayl

lany

ketly

. blo

gspo

t.com

Page 63: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

E muito mais...

massageandoocerebro.wordpress.com

Page 64: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Ah, mas o outro framework

suporta PHP 4...

Chatotorix, de René Goscinny e Albert Uderzo

Page 65: MVC com Zend Framework - PHP Conference Brasil 2010

A reprodução é livre, apenas cite a fonte

@fgsl

Page 66: MVC com Zend Framework - PHP Conference Brasil 2010

Obrigado!

A reprodução é livre, apenas cite a fonte

@fgsl

www.fgsl.eti.br

Little Einsteins by Walt Disney