MVC com Zend Framework
Flávio Gomes da Silva Lisboa
@fgsl
www.fgsl.eti.br
@fgsl
A reprodução é livre, apenas cite a fonte
...
Quem sou eu
2007
2008 2009
A reprodução é livre, apenas cite a fonte
@fgsl
Aplicações...
A reprodução é livre, apenas cite a fonte
@fgsl
serventedepedreiro2.blogspot.com
Aplicações...Web
A reprodução é livre, apenas cite a fonte
@fgsl
adrformacion.com
tareadeinformatica-julia.blogspot.com
al...
Momento Cultural
A reprodução é livre, apenas cite a fonte
@fgsl
A reprodução é livre, apenas cite a fonte
@fgsl
Aplicações são como cebolas...
Shrek by Dreamworks
Cebolinha by Maurício d...
A reprodução é livre, apenas cite a fonte
@fgsl
… elas têm camadas!
mais-objetiva.blogspot.com
A reprodução é livre, apenas cite a fonte
@fgsl
Mas pra quê camadas?
manequim.abril.com.br
copacabanadetoledo.blogger.com....
A reprodução é livre, apenas cite a fonte
@fgsl
O que são camadas?
Martin Fowler
camadas são “os subsistemas
principais no...
A reprodução é livre, apenas cite a fonte
@fgsl
Vantagens de usar camadas
►Compreensão de uma única camada como um todo
co...
A reprodução é livre, apenas cite a fonte
@fgsl
Camadas de uma aplicação
Recursos Externos
Objetos de acesso a dados
Mapea...
A reprodução é livre, apenas cite a fonte
@fgsl
E pra quê tudo isso?
Porque só
existe uma
certeza no
mundo do
software...
A reprodução é livre, apenas cite a fonte
@fgsl
O cliente vai pedir alterações...
Eu te amo, você é perfeito...
...mas que...
A reprodução é livre, apenas cite a fonte
@fgsl
O cliente vai pedir mais alterações...
Mas fizemos um sistema que funciona...
@fgsl
A reprodução é livre, apenas cite a fonte
RESISTIR É INÚTIL!
@fgsl
A reprodução é livre, apenas cite a fonte
RESISTIR É INÚTIL!
@fgsl
A reprodução é livre, apenas cite a fonte
RESISTIR É INÚTIL!
@fgsl
A reprodução é livre, apenas cite a fonte
RESISTIR É INÚTIL!
Se a mudança é a única certeza, a questão é:
Como mudar...
@fgsl
A reprodução é livre, apenas cite a fonte
Melhor mudança
●Custa pouco
●Leva menos tempo
●Cria o menor impacto na apl...
@fgsl
A reprodução é livre, apenas cite a fonte
Práticas que dificultam mudanças
Criação de objetos pela especificação exp...
@fgsl
A reprodução é livre, apenas cite a fonte
Tempo
Algo que você já não tem
Algo que você cada dia tem menos
taocentro....
@fgsl
A reprodução é livre, apenas cite a fonte
Complexidade
Algo que só tende a aumentar
@fgsl
A reprodução é livre, apenas cite a fonte
Por isso, não invente!
eladioebruna.blogspot.com
@fgsl
A reprodução é livre, apenas cite a fonte
Reuse!
mosaico.blogs.ie
dvdnear.com
produto.mercadolivre.com.br
19371973
@fgsl
A reprodução é livre, apenas cite a fonte
Reuse!
He-Man, Skeletor and Battle Cat by Mattel
De novo
essa
cena?
@fgsl
A reprodução é livre, apenas cite a fonte
Reuse!
ivancarlo.blogspot.com fortressofbaileytude.com
John Byrne - 1980 G...
@fgsl
A reprodução é livre, apenas cite a fonte
Reuse!
http://www.coverbrowser.com/top/cool
John Buscema - 1968 John Byrne...
@fgsl
A reprodução é livre, apenas cite a fonte
Reuse!
http://www.interney.net/blogs/melhoresdomundo/2008/05/21/alex_ross_...
@fgsl
A reprodução é livre, apenas cite a fonte
Reutilização
“O movimento para o
desenvolvimento baseado
em reuso foi uma ...
@fgsl
A reprodução é livre, apenas cite a fonte
De código
De desenho
010101011101101010101
111010010110110010101
010110101...
@fgsl
A reprodução é livre, apenas cite a fonte
Tipos de Reutilização
De objetos, quando módulos de código binário
de inte...
@fgsl
A reprodução é livre, apenas cite a fonte
Padrões
“Padrões para componentes
reusáveis facilitam o reuso”
@fgsl
A reprodução é livre, apenas cite a fonte
Padrões
“Padrão é uma maneira de fazer algo, ou de
buscar um objetivo. Em ...
@fgsl
A reprodução é livre, apenas cite a fonte
Padrões
Reduzem a complexidade, fornecendo
abstrações prontas;
Reduzem os ...
@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 ...
A reprodução é livre, apenas cite a fonte
@fgsl
MVC é só a ponta do iceberg...
Recursos Externos
Objetos de acesso a dados...
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.
A reprodução é livre, apenas cite a fonte
@fgsl
Tem mais coisa!
N
N
N
A reprodução é livre, apenas cite a fonte
@fgsl
Uma aplicação tem vários problemas...
...por isso precisa de vários padrõe...
A reprodução é livre, apenas cite a fonte
@fgsl
Software Baseado em Padrão
Para viabilizar o projeto de
software baseado e...
A reprodução é livre, apenas cite a fonte
@fgsl
Framework
“O framework dita a arquitetura de
sua aplicação. Ele irá defini...
A reprodução é livre, apenas cite a fonte
@fgsl
Inversão de Controle
A reprodução é livre, apenas cite a fonte
@fgsl
Inversão de Controle
A inversão de controle estabelece a diferença
entre t...
A reprodução é livre, apenas cite a fonte
@fgsl
Criação de objetos de forma indireta.
Não depende de uma plataforma de har...
A reprodução é livre, apenas cite a fonte
@fgsl
desciclopedia.org
Zend
Db
Zend
Service
Zend
Soap
Zend
Rest
Zend
XmlRpc
Zen...
A reprodução é livre, apenas cite a fonte
@fgsl
Zend
Controller
Front
Zend
Application
Zend
Config
Ini
Xml
Boostrap
Inicia...
A reprodução é livre, apenas cite a fonte
@fgsl
Zend
Tool
Geração de código
A reprodução é livre, apenas cite a fonte
@fgsl
Além do MVC...
►Action Helpers
►View Helpers
►Plugins
►ViewRenderer
►Route...
A reprodução é livre, apenas cite a fonte
@fgsl
Banco de Dados
►Zend_Db: Abstração da conexão com o banco
►Zend_Db_Stateme...
A reprodução é livre, apenas cite a fonte
@fgsl
Segurança
►Zend_Acl: Controle de Acesso
►Zend_Auth, Zend_Oauth e
Zend_Open...
A reprodução é livre, apenas cite a fonte
@fgsl
Diagnóstico e Manutenção
►Zend_Debug
►Zend_Log
antigo.campinas.sp.gov.br
A reprodução é livre, apenas cite a fonte
@fgsl
Formulários Dinâmicos
►Zend_Form
Suporte a filtros, validadores, grupos, s...
A reprodução é livre, apenas cite a fonte
@fgsl
Infraestrutura
►Zend_Config: Configuração por arquivos INI ou XML
►Zend_Ex...
A reprodução é livre, apenas cite a fonte
@fgsl
Performance
►Zend_Cache
►Zend_Config
►Zend_Loader
►Zend_Memory
brickset.com
A reprodução é livre, apenas cite a fonte
@fgsl
Internacionalização
►Zend_Date
►Zend_Currency
►Zend_Locale
►Zend_Translate...
A reprodução é livre, apenas cite a fonte
@fgsl
E-mail
►Zend_Mail
frutobrasil.com.br
A reprodução é livre, apenas cite a fonte
@fgsl
Sistema de Busca
►Zend_Search_Lucene
baseado em
A reprodução é livre, apenas cite a fonte
@fgsl
Integração com
Flash Player
►Zend_Amf
A reprodução é livre, apenas cite a fonte
@fgsl
Integração com
Dojo Toolkit
►Zend_Dojo
A reprodução é livre, apenas cite a fonte
@fgsl
Integração com JQuery
►ZendX_JQuery
A reprodução é livre, apenas cite a fonte
@fgsl
Integração com PHPUnit
►Zend_Test
blog.censanet.com.brkavorka.wordpress.com
A reprodução é livre, apenas cite a fonte
@fgsl
Computação em Nuvem
Zend_Cloud
Zend_Service
kayllanyketly.blogspot.com
A reprodução é livre, apenas cite a fonte
@fgsl
E muito mais...
massageandoocerebro.wordpress.com
A reprodução é livre, apenas cite a fonte
@fgsl
Ah, mas o outro
framework
suporta PHP 4...
Chatotorix, de René Goscinny e ...
A reprodução é livre, apenas cite a fonte
@fgsl
Obrigado!
A reprodução é livre, apenas cite a fonte
@fgsl
www.fgsl.eti.br
Little Einsteins by Walt Disney
Próximos SlideShares
Carregando em…5
×

MVC com Zend Framework - PHP Conference Brasil 2010

1.137 visualizações

Publicada em

Apresentação feita na 5ª PHP Conference Brasil

0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.137
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
49
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

MVC com Zend Framework - PHP Conference Brasil 2010

  1. 1. 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
  2. 2. Quem sou eu 2007 2008 2009 A reprodução é livre, apenas cite a fonte @fgsl
  3. 3. Aplicações... A reprodução é livre, apenas cite a fonte @fgsl serventedepedreiro2.blogspot.com
  4. 4. Aplicações...Web A reprodução é livre, apenas cite a fonte @fgsl adrformacion.com tareadeinformatica-julia.blogspot.com altecnet.com.br freecoloringsheets.net
  5. 5. Momento Cultural A reprodução é livre, apenas cite a fonte @fgsl
  6. 6. 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
  7. 7. A reprodução é livre, apenas cite a fonte @fgsl … elas têm camadas! mais-objetiva.blogspot.com
  8. 8. A reprodução é livre, apenas cite a fonte @fgsl Mas pra quê camadas? manequim.abril.com.br copacabanadetoledo.blogger.com.br
  9. 9. 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”
  10. 10. 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.
  11. 11. A reprodução é livre, apenas cite a fonte @fgsl Camadas de uma aplicação Recursos Externos Objetos de acesso a dados Mapeadores, repositórios e scritps de transação Modelos de domínio e Entidades Controle de fluxo da aplicação Apresentação ou exposição de serviço
  12. 12. A reprodução é livre, apenas cite a fonte @fgsl E pra quê tudo isso? Porque só existe uma certeza no mundo do software...
  13. 13. 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
  14. 14. 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
  15. 15. @fgsl A reprodução é livre, apenas cite a fonte RESISTIR É INÚTIL!
  16. 16. @fgsl A reprodução é livre, apenas cite a fonte RESISTIR É INÚTIL!
  17. 17. @fgsl A reprodução é livre, apenas cite a fonte RESISTIR É INÚTIL!
  18. 18. @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
  19. 19. @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
  20. 20. @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.
  21. 21. @fgsl A reprodução é livre, apenas cite a fonte Tempo Algo que você já não tem Algo que você cada dia tem menos taocentro.blogspot.com oitopassos.com
  22. 22. @fgsl A reprodução é livre, apenas cite a fonte Complexidade Algo que só tende a aumentar
  23. 23. @fgsl A reprodução é livre, apenas cite a fonte Por isso, não invente! eladioebruna.blogspot.com
  24. 24. @fgsl A reprodução é livre, apenas cite a fonte Reuse! mosaico.blogs.ie dvdnear.com produto.mercadolivre.com.br 19371973
  25. 25. @fgsl A reprodução é livre, apenas cite a fonte Reuse! He-Man, Skeletor and Battle Cat by Mattel De novo essa cena?
  26. 26. @fgsl A reprodução é livre, apenas cite a fonte Reuse! ivancarlo.blogspot.com fortressofbaileytude.com John Byrne - 1980 George Pérez - 1985
  27. 27. @fgsl A reprodução é livre, apenas cite a fonte Reuse! http://www.coverbrowser.com/top/cool John Buscema - 1968 John Byrne - 1989
  28. 28. @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
  29. 29. @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
  30. 30. @fgsl A reprodução é livre, apenas cite a fonte De código De desenho 010101011101101010101 111010010110110010101 010110101110101010101 001011111010110101010 110101010000011111001 011111010000110101010 101011110010101010100 011101010101010101110 001110101010101010101 010110101010101011111 Nonono nonnon nonono nononno Tipos de Reutilização
  31. 31. @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.
  32. 32. @fgsl A reprodução é livre, apenas cite a fonte Padrões “Padrões para componentes reusáveis facilitam o reuso”
  33. 33. @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
  34. 34. @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
  35. 35. @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.
  36. 36. A reprodução é livre, apenas cite a fonte @fgsl MVC é só a ponta do iceberg... Recursos Externos Objetos de acesso a dados Mapeadores, repositórios e scritps de transação Modelos de domínio e Entidades Controle de fluxo da aplicação Apresentação ou exposição de serviço M C V
  37. 37. 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.
  38. 38. A reprodução é livre, apenas cite a fonte @fgsl Tem mais coisa! N N N
  39. 39. 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
  40. 40. 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
  41. 41. 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
  42. 42. A reprodução é livre, apenas cite a fonte @fgsl Inversão de Controle
  43. 43. 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.
  44. 44. 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.
  45. 45. A reprodução é livre, apenas cite a fonte @fgsl desciclopedia.org Zend Db Zend Service Zend Soap Zend Rest Zend XmlRpc Zend Controller Page Zend Controller Front Controller, Marvel Comics Zend View Zend Layout Vision, Marvel Comics
  46. 46. A reprodução é livre, apenas cite a fonte @fgsl Zend Controller Front Zend Application Zend Config Ini Xml Boostrap Inicialização Configuração
  47. 47. A reprodução é livre, apenas cite a fonte @fgsl Zend Tool Geração de código
  48. 48. 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
  49. 49. 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.com oculistasoloptica.com
  50. 50. 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
  51. 51. A reprodução é livre, apenas cite a fonte @fgsl Diagnóstico e Manutenção ►Zend_Debug ►Zend_Log antigo.campinas.sp.gov.br
  52. 52. A reprodução é livre, apenas cite a fonte @fgsl Formulários Dinâmicos ►Zend_Form Suporte a filtros, validadores, grupos, subformulários, configuração por arquivo e internacionalização. Superman & Flash, DC Comics es.gov.br
  53. 53. 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
  54. 54. A reprodução é livre, apenas cite a fonte @fgsl Performance ►Zend_Cache ►Zend_Config ►Zend_Loader ►Zend_Memory brickset.com
  55. 55. A reprodução é livre, apenas cite a fonte @fgsl Internacionalização ►Zend_Date ►Zend_Currency ►Zend_Locale ►Zend_Translate blogalize.net
  56. 56. A reprodução é livre, apenas cite a fonte @fgsl E-mail ►Zend_Mail frutobrasil.com.br
  57. 57. A reprodução é livre, apenas cite a fonte @fgsl Sistema de Busca ►Zend_Search_Lucene baseado em
  58. 58. A reprodução é livre, apenas cite a fonte @fgsl Integração com Flash Player ►Zend_Amf
  59. 59. A reprodução é livre, apenas cite a fonte @fgsl Integração com Dojo Toolkit ►Zend_Dojo
  60. 60. A reprodução é livre, apenas cite a fonte @fgsl Integração com JQuery ►ZendX_JQuery
  61. 61. A reprodução é livre, apenas cite a fonte @fgsl Integração com PHPUnit ►Zend_Test blog.censanet.com.brkavorka.wordpress.com
  62. 62. A reprodução é livre, apenas cite a fonte @fgsl Computação em Nuvem Zend_Cloud Zend_Service kayllanyketly.blogspot.com
  63. 63. A reprodução é livre, apenas cite a fonte @fgsl E muito mais... massageandoocerebro.wordpress.com
  64. 64. A reprodução é livre, apenas cite a fonte @fgsl Ah, mas o outro framework suporta PHP 4... Chatotorix, de René Goscinny e Albert Uderzo
  65. 65. A reprodução é livre, apenas cite a fonte @fgsl
  66. 66. Obrigado! A reprodução é livre, apenas cite a fonte @fgsl www.fgsl.eti.br Little Einsteins by Walt Disney

×