Frameworks PHP

9.512 visualizações

Publicada em

Qual o estado dos frameworks atualmente no PHP, assim como a situação atual da linguagem. Como você pode escolher seu framework e um comparativo entre os 4 principais frameworks do mercado.

Publicada em: Tecnologia
4 comentários
24 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
9.512
No SlideShare
0
A partir de incorporações
0
Número de incorporações
891
Ações
Compartilhamentos
0
Downloads
332
Comentários
4
Gostaram
24
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Frameworks PHP

  1. 1. PHPFrameworks Augusto Pascutti
  2. 2. @AUGUSTOHPAUGUSTO@PHPSP.ORG.BR
  3. 3. AGENDA
  4. 4. AGENDA• PHP• Frameworks• Principais Frameworks PHP
  5. 5. PHP
  6. 6. PHP• Criado em 1995• Versão atual: 5.3.5• Software livre
  7. 7. CRESCIMENTO DO PHP
  8. 8. CRESCIMENTO DO PHP 1995 • Versão 1.0 • Rasmus Lerdorf • PERL • Personal Home Pages
  9. 9. CRESCIMENTO DO PHP 1998 • Versão 3.0 • Zeev + Andi • PHP: Hypertext Preprocessor • Orientação a Objetos • PHPClasses.org
  10. 10. CRESCIMENTO DO PHP 2000 • Versão 4.0 • Zend Engine • Estabelecimento no mercado
  11. 11. CRESCIMENTO DO PHP 2004 • Versão 5.0 • Zend Engine 2 • Novo modelo de objetos • Melhora na Performance • PDO e SPL
  12. 12. CRESCIMENTO DO PHP2009 • Versão 5.3 • Namespaces, Closures, Garbage Collector (Ref. Cicl.), Phar, etc ... • Windows++ • Performance++
  13. 13. CRESCIMENTO DO PHP Futuro • Versão 5.4 ou 6.0 • Segurança • Traits • Type Hints • “Briguinhas”: • Annotations • Unicode
  14. 14. E QUANTO AO SEUCRESCIMENTO ?
  15. 15. ONDE VOCÊ ESTÁ? Sobrinho • Copiou, • Colou, • Funcionou? • Beleza!Autor: Flávio Gomes da Silva Lisboa
  16. 16. ONDE VOCÊ ESTÁ? Júnior • Pouca experiência • Muita força de vontade • Curiosidade
  17. 17. ONDE VOCÊ ESTÁ? Pleno • Conhecem suas limitações • Buscam soluções • Aprendem com seus erros
  18. 18. ONDE VOCÊ ESTÁ?Sênior • Segurança em seu trabalho • Conhecem as soluções • Muita experiência • Aprendem com erros alheios
  19. 19. ONDE VOCÊ ESTÁ?Chuck Norris • Forçam o desenvolvimento do PHP • Contribuem • Distribuem
  20. 20. ONDE VOCÊ ESTÁ?Core developers • Fazem sua própria cerveja • Não dormem • Criam o que demoramos a aprender • Estão sempre dispostos a ajudar
  21. 21. POR QUE ELE TA FALANDO ISSO ?
  22. 22. SÓ VOCÊ PODE SEAJUDAR.
  23. 23. SUAEVOLUÇÃODEPENDE SÓ DE VOCÊ.
  24. 24. FRAMEWORKS
  25. 25. FRAMEWORKS “... são uma abstração queune códigos comuns entrevários projetos provendo uma funcionalidade genérica.” Wikipedia
  26. 26. EXISTEM TIPOS?
  27. 27. EXISTEM TIPOS?• Bibliotecas (Ex: Pear, Zeta Components)• Frameworks • Restritivos (Ex: CakePHP) • Baixo Acoplamento (Ex: Zend Framework)
  28. 28. PORQUE ADOTAR UM?
  29. 29. PORQUE ADOTAR UM?• Código testado/testável• Grande base de uso• Experiência agregada• Foque no que importa: Regras de Negócio
  30. 30. QUEM USA?
  31. 31. QUEM USA?
  32. 32. PORQUE NÃO ADOTAR?
  33. 33. PORQUE NÃO ADOTAR?• Performance• Curva de aprendizado• Dependência
  34. 34. “FRAMEWORKS PHP POSSUEMUMA PERFORMANCE POBRE ...” Rasmus Lerdorf, 2005
  35. 35. COMPARADOSAO PHP (PURO), SIM ...
  36. 36. ... MAS E AMANUTENÇÃO DESSE CÓDIGO?
  37. 37. “ ... 97% DO TEMPO, A OTIMIZAÇÃOPREMATURA É A RAIZ DE TODO MAL.” Donald Knuth
  38. 38. “ ... 97% DO TEMPO, A OTIMIZAÇÃOPREMATURA É A RAIZ DE TODO MAL.” Donald Knuth
  39. 39. HARDWARE, HOJE, É MUITOMAIS BARATO DO QUE AS HORAS DE UMPROFISSIONAL
  40. 40. O QUE ELE FARÁ POR VOCÊ• Agiliza desenvolvimento• Melhora segurança• Melhora establidade
  41. 41. O QUE ELE NÃO FARÁ• Melhorará seu código• Evitará que cometa erros• Garantirá o sucesso do seu projeto
  42. 42. TER TUDO QUE VOCÊ PRECISAPRA FAZERUMA CASA...
  43. 43. NÃO SIGNIFICA QUE VOCÊ É CAPAZ DECONSTRUIR UMA.
  44. 44. COMO ESCOLHER?
  45. 45. COMO ESCOLHER?• Quem é o líder?• Documentação• Tamanho da comunidade• Atividade do Projeto• Comprometimento com o PHP
  46. 46. QUEM É O LÍDER?
  47. 47. QUEM É O LÍDER?• Empresa, Pessoa ou Grupo• Você vai depender dele/dela• Com que frequência ele muda de idéia? (BC)• Sucesso do projeto (Framework) depende disso
  48. 48. O BUG #50696 E VOCÊ!
  49. 49. O BUG #50696 E VOCÊ!• Depois da atualização para o PHP 5.3 • number_format(“”, 0) = null• Antes da atualização • number_format(“”,0) = 0 (zero)
  50. 50. Eu sou o Rasmus!
  51. 51. E eu o programador “afetado”
  52. 52. Esse comportamento ... é um bug certo?
  53. 53. Não. Meu! Esse seu código não geraWARNINGS não!? Meio non-sense ele!
  54. 54. Ok. Você não me entendeu.
  55. 55. Isso funcionava desde o princípio!
  56. 56. Eu entendi. Mas mudamos isso pra corrigir bugs esquisitos em casos esquisitos ....
  57. 57. Resumindo, vocês me fude***!
  58. 58. Qual a razão disso? Você acha que alguém tem NULL reais na conta?
  59. 59. Não! Você pode corrigir tudo isso assim ...
  60. 60. Meu, vão levar MESES pra mudar tudo!
  61. 61. Você ta sendo um pouco dramático ...
  62. 62. Meu, você não tem noção do que você ta falando.
  63. 63. Trabalho numa grande organização! Você não tem noção.
  64. 64. Acredite. Eu tenho.
  65. 65. Entendi. O seu ambiente é maior..Provavelmente muito mais crítico!
  66. 66. Cara, não tem como você passar pra alguém mais capacitado?
  67. 67. Quem dera eu tivesse amigo. Quem dera eu tivesse.
  68. 68. DOCUMENTAÇÃO
  69. 69. DOCUMENTAÇÃO• Tão fundamental quanto o código que move o framework• Atualizada regularmente?• Tão extensa quanto o projeto?•É objetiva e bem organizada?
  70. 70. COMUNIDADE
  71. 71. COMUNIDADE•É a alternativa à documentação• Quanto tempo ela tem?• Quão forte ela é? • Ela é escutada pelo(s) líder(es)? • Quantas pessoas você conhece que usam o framework? • Google!• Qual a relação dela com o projeto? (Commits, etc ...)
  72. 72. ATIVIDADE
  73. 73. ATIVIDADE• Qual a frequêcia de desenvolvimento? • Diária é o que eu esperaria• Quão rápido um bug é encontrado/corrigido?• Quão frequente são os novos releases?• Quais são os planos futuros?
  74. 74. ATIVIDADE• Como ver isso? • Frequência de commits • Roadmap • Sistema de tickets/bugs • Quantos abertos? • Quantos resolvidos? • Ohloh
  75. 75. COMPROMETIMENTO COM PHP
  76. 76. COMPROMETIMENTO COM PHP•O projeto acompanha as mudanças do PHP?• Qual a relação dos líderes com o desenvolvimento do PHP?• Quão informados eles estão sobre a direção do PHP?
  77. 77. EU TENHO O MEUFRAMEWORK
  78. 78. CUIDADO
  79. 79. SEU FRAMEWORK• Fora você, os outros sofrerão com a curva de aprendizado• Documentação?• Base de usuários?• Ajuda?• Testes Unitários?• Boas práticas?
  80. 80. SEU FRAMEWORK• Válido em poucos casos (poucos mesmo) • Aplicações específicas • Base de acesso é MUITO grande (Ex: Facebook) • Processamento de dados MUITO grande• Sempre válido como aprendizado
  81. 81. PRINCIPAIS FRAMEWORKS
  82. 82. PRINCIPAIS FRAMEWORKS• Mais tempo de casa• Maior base de usuários• Mais cases de sucesso• Respeitam os usuários• Todos são MVC• Satisfazem os requisitos que levantei a pouco • Ótima documentação e Atividade
  83. 83. QUEM SÃOELES?
  84. 84. QUAL APOPULARIDADE DE CADA?
  85. 85. Buscas no Google100 90 80 70 60 Zend Framework CakePHP Symfony Code Igniter 50 40 30 20 10 0 2006 2007 2008 2009 2010 Fonte: Google Trends
  86. 86. TwtPool40302010 0 Usam Zend Framework CakePHP Code Igniter Symfony Outro http://twtpoll.com/r/d1ulz2
  87. 87. VAMOS AOS NOSSOSCONCORRENTES
  88. 88. http://cakephp.org/
  89. 89. CAKEPHP• Produção rápida (Bake)• Baixa curva de aprendizado (Piece of Cake)• Equivalente ao Rails• Active Record• PHP 4.3.2• Funciona em qualquer hospedagem
  90. 90. CAKEPHP• Restritivo• Código fonte poluído • Muito grande. Difícil manutenção • Difícil de testar
  91. 91. QUEM É O LÍDER?
  92. 92. QUEM É O LÍDER?• Cake Software Foundation• Antigo core-developer Nate Abele (agora Lithium)• Core atual • Grupo eleito meritocraticamente
  93. 93. COMUNIDADE
  94. 94. COMUNIDADE• Muito próxima do desenvolvimento• Portais do próprio CakePHP • Bakery, Google Groups, Planet, Tv• Comunidade brasileira madura e forte• @renansaddan (Core developer brasileiro)
  95. 95. ATIVIDADE
  96. 96. ATIVIDADE• Atual 1.3.6• Futura 2.0 (já disponível, instável) • Compatível só com PHP 5
  97. 97. COMPROMETIMENTO COM PHP
  98. 98. COMPROMETIMENTO COM PHP• Pequeno• Muito tempo compatível com versão 4 (ainda é)• Possuem tendências de seguir Strict Standards• Não seguem as recomendações (PSR)
  99. 99. http://framework.zend.com/
  100. 100. ZEND FRAMEWORK• Baixo acoplamento (Componentes)• Código fonte limpo: Design Patterns• Empresas envolvidas: Google, Adobe• Componentes (centenas)• Muito testado! Testes, Testes e mais Testes!• Enterprise focused• PHP 5.2 >
  101. 101. ZEND FRAMEWORK• Não possui camada de Model explícita• Configurações e mais configurações (Muitas. Mesmo!)• Curva de aprendizado variável• Pouca documentação de uso na forma Full Stack • Má utilização do framework (geralmente)
  102. 102. QUEM É O LÍDER?
  103. 103. QUEM É O LÍDER?• Zend (empresa mantenedora do PHP)• Matt Weier O’Phinney (funcionário Zend)
  104. 104. COMUNIDADE
  105. 105. COMUNIDADE• Muito próxima do desenvolvimento• Influencia ativamente no desenvolvimento • Propostas, Bug-hunts, Patches, etc ...• Muito grande nos últimos 2 anos • Um tanto quanto imatura ainda (opinião pessoal)
  106. 106. ATIVIDADE
  107. 107. ATIVIDADE• Atual 1.11.2• Futura 2.0 (em desenvolvimento, passos largos) • Compatível só com PHP 5.3 >
  108. 108. COMPROMETIMENTO COM PHP
  109. 109. COMPROMETIMENTO COM PHP• Não preciso comentar, preciso?• Strict Standards • Versão 1.x ( PHP 5>) • Versão 2.x (PHP 5.3>)• PHP Standards Recomendations (PSR)
  110. 110. http://symfony-project.org/
  111. 111. SYMFONY• Segurança e boas práticas• Código fonte limpo: Design Patterns• Desenvolvimento rápido (ferramenta CLI)• ORM (Doctrine ou Propel)• PHP 5.2 >
  112. 112. SYMFONY• Mais configurações que Cake e Code Igniter• Curva de aprendizado um pouco maior• Mudanças repentinas no projeto já ocorreram
  113. 113. QUEM É O LÍDER?
  114. 114. QUEM É O LÍDER?• Fabien Potencier • Atual “Rock Star” do PHP • Seu lema atual: “Dependecy Injection”• Sensio Labs (Empresa, presta suporte)
  115. 115. COMUNIDADE
  116. 116. COMUNIDADE• Pequena relativa aos demais• Amparada pelo projeto • Diretório de plugins, bloggers, Wiki
  117. 117. ATIVIDADE
  118. 118. ATIVIDADE• Atual 1.4• Futura 2.0 (em desenvolvimento, programada para 03/2011) • Compatível só com PHP 5.3 > • Performance++ • Muito baseada no Cocoa (Apple)
  119. 119. COMPROMETIMENTO COM PHP
  120. 120. COMPROMETIMENTO COM PHP• Muito próxima• Strict Standards• PHP Standards Recomendations (PSR) • Fabien faz parte do próprio grupo• Contribuem ativamente com o desenvolvimento do PHP
  121. 121. http://codeigniter.com/
  122. 122. CODE IGNITER• Small footprint• Restritivo (não tanto quanto Cake)• Baixa curva de aprendizado• Performance• ORM próprio• PHP 4.3.2 >• Funciona em qualquer hospedagem
  123. 123. QUEM É O LÍDER?
  124. 124. QUEM É O LÍDER?• Ellis Lab • Usam o “CI” como base para produtos próprios• Problemas recorrentes com a comunidade
  125. 125. COMUNIDADE
  126. 126. COMUNIDADE• Próxima do desenvolvimento do framework• Decisões finais sempre da Ellis Lab• Madura e grande (também no Brasil)
  127. 127. ATIVIDADE
  128. 128. ATIVIDADE• Atual 1.7.3• Futura 2.0 (em desenvolvimento) • Compatível com PHP 5.2 > • Branches separados • Comunidade, mas ainda controlada pela Ellis Lab (Reactor) • Ellis Lab (Core)
  129. 129. COMPROMETIMENTO COM PHP
  130. 130. COMPROMETIMENTO COM PHP• Pequeno• Sem propostas (atuais e futuras) de seguir Strict Standards• Não seguem as recomendações (PSR)• Não contribuem muito com o desenvolvimento da linguagem
  131. 131. RESUMINDO
  132. 132. VOCÊ QUERDESENVOLVER AS COISAS RÁPIDO
  133. 133. BAIXA CURVA DEAPRENDIZADO E MUITO RESULTADO
  134. 134. ESSES SÃO OS CARASPerformance++ Produção++
  135. 135. VOCÊ QUER ALTOCONTROLE SOBRE TUDO
  136. 136. CÓDIGO BEM FEITO EDOCUMENTADO
  137. 137. ESSES É O CARA
  138. 138. VOCÊ SE PREOCUPACOM TUDO ISSO?
  139. 139. QUER OMEIO-TERMO?
  140. 140. ESSES É O CARA

×