frameworks php
DESCRIPTION
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.TRANSCRIPT
Augusto PascuttiFrameworksPHP
AGENDA
AGENDA
• PHP
• Frameworks
• Principais Frameworks PHP
PHP
PHP
• Criado em 1995
• Versão atual: 5.3.5
• Software livre
CRESCIMENTO DO PHP
CRESCIMENTO DO PHP
1995
• Versão 1.0
• Rasmus Lerdorf
• PERL
• Personal Home Pages
CRESCIMENTO DO PHP
1998
• Versão 3.0
• Zeev + Andi
• PHP: Hypertext Preprocessor
•Orientação a Objetos
• PHPClasses.org
CRESCIMENTO DO PHP
2000
• Versão 4.0
• Zend Engine
• Estabelecimento no mercado
CRESCIMENTO DO PHP
2004
• Versão 5.0
• Zend Engine 2
• Novo modelo de objetos
•Melhora na Performance
• PDO e SPL
CRESCIMENTO DO PHP
2009
• Versão 5.3
•Namespaces, Closures, Garbage Collector (Ref. Cicl.), Phar, etc ...
•Windows++
• Performance++
CRESCIMENTO DO PHP
• Versão 5.4 ou 6.0
• Segurança
• Traits
• Type Hints
• “Briguinhas”:
• Annotations
• Unicode
Futuro
E QUANTO AO SEU
CRESCIMENTO ?
ONDE VOCÊ ESTÁ?
Sobrinho
• Copiou,
• Colou,
• Funcionou?
• Beleza!Autor: Flávio Gomes da Silva Lisboa
ONDE VOCÊ ESTÁ?
Júnior
• Pouca experiência
•Muita força de vontade
• Curiosidade
ONDE VOCÊ ESTÁ?
Pleno
• Conhecem suas limitações
• Buscam soluções
• Aprendem com seus erros
ONDE VOCÊ ESTÁ?
Sênior
• Segurança em seu trabalho
• Conhecem as soluções
•Muita experiência
• Aprendem com erros alheios
ONDE VOCÊ ESTÁ?
Chuck Norris
• Forçam o desenvolvimento do PHP
• Contribuem
• Distribuem
ONDE VOCÊ ESTÁ?
• Fazem sua própria cerveja
• Não dormem
• Criam o que demoramos a aprender
• Estão sempre dispostos a ajudar
Core developers
POR QUE ELE TA FALANDO ISSO ?
SÓ VOCÊ PODE SE
AJUDAR.
SUA EVOLUÇÃO DEPENDE SÓ
DE VOCÊ.
FRAMEWORKS
FRAMEWORKS
“... são uma abstração que une códigos comuns entre vários projetos provendo uma
funcionalidade genérica.”
Wikipedia
EXISTEM TIPOS?
EXISTEM TIPOS?
• Bibliotecas (Ex: Pear, Zeta Components)
• Frameworks
• Restritivos (Ex: CakePHP)
• Baixo Acoplamento (Ex: Zend Framework)
PORQUE ADOTAR UM?
PORQUE ADOTAR UM?
• Código testado/testável
• Grande base de uso
• Experiência agregada
• Foque no que importa: Regras de Negócio
QUEM USA?
QUEM USA?
PORQUE NÃO ADOTAR?
PORQUE NÃO ADOTAR?
• Performance
• Curva de aprendizado
• Dependência
“FRAMEWORKS PHP POSSUEM UMA PERFORMANCE POBRE ...”
Rasmus Lerdorf, 2005
COMPARADOS
AO PHP (PURO),
SIM ...
... MAS E A
MANUTENÇÃO
DESSE CÓDIGO?
“ ... 97% DO TEMPO, A OTIMIZAÇÃO PREMATURA É A RAIZ DE TODO MAL.”
Donald Knuth
“ ... 97% DO TEMPO, A OTIMIZAÇÃO PREMATURA É A RAIZ DE TODO MAL.”
Donald Knuth
HARDWARE, HOJE, É MUITO
MAIS BARATO DO QUE AS
HORAS DE UM PROFISSIONAL
O QUE ELE FARÁ POR VOCÊ
•Agiliza desenvolvimento
•Melhora segurança
•Melhora establidade
O QUE ELE NÃO FARÁ
•Melhorará seu código
• Evitará que cometa erros
• Garantirá o sucesso do seu projeto
TER TUDO QUE VOCÊ PRECISA
PRA FAZER UMA CASA...
NÃO SIGNIFICA QUE VOCÊ É CAPAZ DE
CONSTRUIR UMA.
COMO ESCOLHER?
COMO ESCOLHER?
•Quem é o líder?
• Documentação
• Tamanho da comunidade
•Atividade do Projeto
• Comprometimento com o PHP
QUEM É O LÍDER?
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
O BUG #50696 E VOCÊ!
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)
Eu sou o Rasmus!
E eu o programador “afetado”
Esse comportamento ... é um bug certo?
Não. Meu! Esse seu código não gera WARNINGS não!? Meio non-sense ele!
Ok. Você não me entendeu.
Isso funcionava desde o princípio!
Eu entendi. Mas mudamos isso pra corrigir bugs esquisitos em casos esquisitos ....
Resumindo, vocês me fude***!
Qual a razão disso? Você acha que alguém tem NULL reais na conta?
Não! Você pode corrigir tudo isso assim ...
Meu, vão levar MESES pra mudar tudo!
Você ta sendo um pouco dramático ...
Meu, você não tem noção do que você ta falando.
Trabalho numa grande organização! Você não tem noção.
Acredite. Eu tenho.
Entendi. O seu ambiente é maior.. Provavelmente muito mais crítico!
Cara, não tem como você passar pra alguém mais capacitado?
Quem dera eu tivesse amigo. Quem dera eu tivesse.
DOCUMENTAÇÃO
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?
COMUNIDADE
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 ...)
ATIVIDADE
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?
ATIVIDADE
• Como ver isso?
• Frequência de commits
• Roadmap
• Sistema de tickets/bugs
•Quantos abertos?
•Quantos resolvidos?
•Ohloh
COMPROMETIMENTO COM PHP
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?
EU TENHO O MEU
FRAMEWORK
CUIDADO
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?
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
PRINCIPAIS FRAMEWORKS
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
QUEM SÃO
ELES?
QUAL A POPULARIDADE
DE CADA?
0
10
20
30
40
50
60
70
80
90
100
2006 2007 2008 2009 2010
Buscas no Google
Zend Framework CakePHP Symfony Code Igniter
Fonte: Google Trends
0
10
20
30
40
Usam
TwtPool
Zend Framework CakePHP Code Igniter Symfony Outro
http://twtpoll.com/r/d1ulz2
VAMOS AOS NOSSOS
CONCORRENTES
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
CAKEPHP
• Restritivo
• Código fonte poluído
•Muito grande. Difícil manutenção
• Difícil de testar
QUEM É O LÍDER?
QUEM É O LÍDER?
• Cake Software Foundation
• Antigo core-developer Nate Abele (agora Lithium)
• Core atual
• Grupo eleito meritocraticamente
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)
COMUNIDADE
ATIVIDADE
ATIVIDADE
• Atual 1.3.6
• Futura 2.0 (já disponível, instável)
• Compatível só com PHP 5
COMPROMETIMENTO COM PHP
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)
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 >
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)
QUEM É O LÍDER?
QUEM É O LÍDER?
• Zend (empresa mantenedora do PHP)
•Matt Weier O’Phinney (funcionário Zend)
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)
COMUNIDADE
ATIVIDADE
ATIVIDADE
• Atual 1.11.2
• Futura 2.0 (em desenvolvimento, passos largos)
• Compatível só com PHP 5.3 >
COMPROMETIMENTO COM PHP
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)
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 >
SYMFONY
•Mais configurações que Cake e Code Igniter
• Curva de aprendizado um pouco maior
•Mudanças repentinas no projeto já ocorreram
QUEM É O LÍDER?
QUEM É O LÍDER?
• Fabien Potencier
• Atual “Rock Star” do PHP
• Seu lema atual: “Dependecy Injection”
• Sensio Labs (Empresa, presta suporte)
COMUNIDADE
• Pequena relativa aos demais
• Amparada pelo projeto
• Diretório de plugins, bloggers, Wiki
COMUNIDADE
ATIVIDADE
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)
COMPROMETIMENTO COM PHP
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
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
QUEM É O LÍDER?
QUEM É O LÍDER?
• Ellis Lab
• Usam o “CI” como base para produtos próprios
• Problemas recorrentes com a comunidade
COMUNIDADE
• Próxima do desenvolvimento do framework
• Decisões finais sempre da Ellis Lab
•Madura e grande (também no Brasil)
COMUNIDADE
ATIVIDADE
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)
COMPROMETIMENTO COM PHP
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
RESUMINDO
VOCÊ QUER DESENVOLVER
AS COISAS RÁPIDO
BAIXA CURVA DE
APRENDIZADO E MUITO
RESULTADO
ESSES SÃO OS CARAS
Produção++Performance++
VOCÊ QUER ALTO
CONTROLE SOBRE TUDO
CÓDIGO BEM FEITO E
DOCUMENTADO
ESSES É O CARA
VOCÊ SE PREOCUPA
COM TUDO ISSO?
QUER O MEIO-TERMO?
ESSES É O CARA