frameworks php

Post on 26-May-2015

7.895 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

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

@AUGUSTOHPAUGUSTO@PHPSP.ORG.BR

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

http://cakephp.org/

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)

http://framework.zend.com/

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

http://codeigniter.com/

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

top related