Your SlideShare is downloading. ×
MVC com Zend Framework - PHP Conference Brasil 2010
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

MVC com Zend Framework - PHP Conference Brasil 2010

928
views

Published on

Apresentação feita na 5ª PHP Conference Brasil

Apresentação feita na 5ª PHP Conference Brasil


0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
928
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
46
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. Quem sou eu 2007 2008 2009 A reprodução é livre, apenas cite a fonte @fgsl
  • 3. Aplicações... A reprodução é livre, apenas cite a fonte @fgsl serventedepedreiro2.blogspot.com
  • 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. Momento Cultural A reprodução é livre, apenas cite a fonte @fgsl
  • 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. A reprodução é livre, apenas cite a fonte @fgsl … elas têm camadas! mais-objetiva.blogspot.com
  • 8. A reprodução é livre, apenas cite a fonte @fgsl Mas pra quê camadas? manequim.abril.com.br copacabanadetoledo.blogger.com.br
  • 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. 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. 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. A reprodução é livre, apenas cite a fonte @fgsl E pra quê tudo isso? Porque só existe uma certeza no mundo do software...
  • 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. 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. @fgsl A reprodução é livre, apenas cite a fonte RESISTIR É INÚTIL!
  • 16. @fgsl A reprodução é livre, apenas cite a fonte RESISTIR É INÚTIL!
  • 17. @fgsl A reprodução é livre, apenas cite a fonte RESISTIR É INÚTIL!
  • 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. @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. @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. @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. @fgsl A reprodução é livre, apenas cite a fonte Complexidade Algo que só tende a aumentar
  • 23. @fgsl A reprodução é livre, apenas cite a fonte Por isso, não invente! eladioebruna.blogspot.com
  • 24. @fgsl A reprodução é livre, apenas cite a fonte Reuse! mosaico.blogs.ie dvdnear.com produto.mercadolivre.com.br 19371973
  • 25. @fgsl A reprodução é livre, apenas cite a fonte Reuse! He-Man, Skeletor and Battle Cat by Mattel De novo essa cena?
  • 26. @fgsl A reprodução é livre, apenas cite a fonte Reuse! ivancarlo.blogspot.com fortressofbaileytude.com John Byrne - 1980 George Pérez - 1985
  • 27. @fgsl A reprodução é livre, apenas cite a fonte Reuse! http://www.coverbrowser.com/top/cool John Buscema - 1968 John Byrne - 1989
  • 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. @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. @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. @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. @fgsl A reprodução é livre, apenas cite a fonte Padrões “Padrões para componentes reusáveis facilitam o reuso”
  • 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. @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. @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. 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. 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. A reprodução é livre, apenas cite a fonte @fgsl Tem mais coisa! N N N
  • 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. 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. 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. A reprodução é livre, apenas cite a fonte @fgsl Inversão de Controle
  • 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. 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. 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. A reprodução é livre, apenas cite a fonte @fgsl Zend Controller Front Zend Application Zend Config Ini Xml Boostrap Inicialização Configuração
  • 47. A reprodução é livre, apenas cite a fonte @fgsl Zend Tool Geração de código
  • 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. 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. 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. A reprodução é livre, apenas cite a fonte @fgsl Diagnóstico e Manutenção ►Zend_Debug ►Zend_Log antigo.campinas.sp.gov.br
  • 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. 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. A reprodução é livre, apenas cite a fonte @fgsl Performance ►Zend_Cache ►Zend_Config ►Zend_Loader ►Zend_Memory brickset.com
  • 55. A reprodução é livre, apenas cite a fonte @fgsl Internacionalização ►Zend_Date ►Zend_Currency ►Zend_Locale ►Zend_Translate blogalize.net
  • 56. A reprodução é livre, apenas cite a fonte @fgsl E-mail ►Zend_Mail frutobrasil.com.br
  • 57. A reprodução é livre, apenas cite a fonte @fgsl Sistema de Busca ►Zend_Search_Lucene baseado em
  • 58. A reprodução é livre, apenas cite a fonte @fgsl Integração com Flash Player ►Zend_Amf
  • 59. A reprodução é livre, apenas cite a fonte @fgsl Integração com Dojo Toolkit ►Zend_Dojo
  • 60. A reprodução é livre, apenas cite a fonte @fgsl Integração com JQuery ►ZendX_JQuery
  • 61. A reprodução é livre, apenas cite a fonte @fgsl Integração com PHPUnit ►Zend_Test blog.censanet.com.brkavorka.wordpress.com
  • 62. A reprodução é livre, apenas cite a fonte @fgsl Computação em Nuvem Zend_Cloud Zend_Service kayllanyketly.blogspot.com
  • 63. A reprodução é livre, apenas cite a fonte @fgsl E muito mais... massageandoocerebro.wordpress.com
  • 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. A reprodução é livre, apenas cite a fonte @fgsl
  • 66. Obrigado! A reprodução é livre, apenas cite a fonte @fgsl www.fgsl.eti.br Little Einsteins by Walt Disney