Frameworks PHP

Comparando as principais ferramentas
           disponíveis
Quem sou eu

● Graduando em TADS
● Trabalha com PHP desde 2007
● Pequena experiência com tecnologias MS / Oracle
Principais Tópicos

 ● Design patterns
 ● O que é um Framework?
 ● Por que utilizar?
 ● Solução livre vs Solução comercial
 ● Qual Framework devo usar?
Design Patterns
O que?
Por que?
?
Quais?
Singleton
Factory
Adapter
Pubsub
?
O que é um Framework?
Moldura de trabalho
Conjunto de ferramentas
Modelos de frameworks
Full stack
Component based
CMS
Por que usar um Framework?

● Estabilidade
   ○ Symfony 2
       ■ Dois anos de planejamento
       ■ Dois anos de desenvolvimento e testes
Por que usar um Framework?

● Funcionalidades
   ○ Zend Framework
       ■ Mais de 60 módulos e crescendo
       ■ Sugestões da comunidade
       ■ Módulos de terceiros
Por que usar um Framework?

● Padronização (?)
   ○ CakePHP
       ■ Model, View, Controller
       ■ DataSource, Helper, Component
Solução comercial vs Solução livre

 ● Solução comercial
    ○ Mensalidade de suporte
    ○ Apoio centralizado
    ○ Documentação concisa
Solução comercial vs Solução livre

 ● Solução livre
    ○ Apoio da comunidade
    ○ Velocidade de resposta
    ○ Documentação aberta
    ○ Código fonte disponível
Qual framework devo usar?

● Problemas
   ○ Tempo
   ○ Dinheiro
Qual framework devo usar?

● Avalie
   ○ Necessidades do SEU projeto
   ○ Maturidade dos frameworks
   ○ Conhecimento da equipe
   ○ Qualidade da documentação / comunidade
Zend Framework

● PHP 5
● Orientação a Objetos
● Design Patterns
   ○ MVC
   ○ Factory
   ○ Adapter
● Desenvolvido pela Zend em conjunto com a comunidade
● Parte do Zend PHP Collaboration Project
Zend Framework
Vantagens
● Suporte comercial da Zend
● Componentes reutilizáveis
● Documentação decente
● Grande produtividade
● Licença com foco comercial
● Certificação de profissionais
● Empresas envolvidas:
Zend Framework
Documentação
● Documentação oficial no site
● Livros
CakePHP

● PHP 4 + PHP 5
● Design Patterns
   ○ MVC
   ○ ActiveRecord
CakePHP
Vantagens
● Licença flexível: MIT
● Funciona em (quase) qualquer servidor por aí (PHP 4 e 5)
● Geração fácil de CRUD a partir do BD
● Validação de formulários
● Templates
● Ferramentas que auxiliam a gerar código
    ○ JavaScript
    ○ HTML
● Internacionalização
● Comunidade ativa
● Implantação facilitada
CakePHP
Documentação
● Book
● Bakery
● API
● Documentação em português
Symfony

● PHP 5.3
● Design Patterns
   ○ MVC
● Princípios
   ○ DRY
   ○ KISS
Symfony
Vantagens
● Licença flexível: MIT
● Fácil de instalar e configurar
● Simples de aprender
● Altamente configurável
● Inovação
● Geradores
    ○ Projetos
    ○ Código
Symfony
Documentação
● Book
● Cookbook
● Referência
● API
● Glossário
CodeIgniter / kohana

 ● PHP 4 + PHP 5
 ● Simplicidade

 ● kohana é um fork do CodeIgniter
CodeIgniter / kohana
Vantagens
 ● Pequeno
 ● Bom desempenho
 ● Não possui dependências externas (PECL, PEAR)
 ● Documentação clara
CodeIgniter / kohana
Documentação
 ● CodeIgniter
    ○ Tutoriais
    ○ Guia do usuário
 ● kohana
    ○ Guia do usuário
yii

 ● PHP 5
 ● Componentes para grandes aplicações
 ● Design pattern
    ○ MVC
 ● WTF "yii"?
    ○ Lê-se: 'i', em bom português
    ○ Easy
    ○ Efficient
    ○ Extensible
 ● Criado pelos desenvolvedores do PRADO
yii
Vantagens
● Alto desempenho
● Comunidade ativa
● Gerador de código
● Widgets
● Integração com jQuery
yii
Documentação
● Tour
● Tutoriais
● Referência a classes
● Wiki
● Outros
   ○ Cheat sheets
   ○ Playground
   ○ Podcasts
   ○ Blogs indicados
   ○ IRC
DooPHP

● Do OOP in PHP
● Usa implementação nativa de OOP
● Evita métodos mágicos
● Design patterns
   ○ MVC
   ○ ORM
● API REST
DooPHP
Vantagens
● O framework mais rápido do oeste
● Fácil desacoplamento
● Fácil implantação
DooPHP
Documentação
● Guia definitivo
● Referência a API
● Blog
● Demos
Recess

● PHP 5
● Foco em REST
● Ferramenta para qualquer desenvolvedor
● Suporte a annotations
● MVC fácilmente desacoplável
● Filosofia DRY
● Arquitetura orientada a cache
Recess
Vantagens
● Licença flexível: MIT
● GUI para gerar aplicações e rotas
Recess
Documentação
● The Book of Recess
● Instruções de instalação
● Tutoriais
● Guias de usuário
● Blog
Contato?

contato = {
   nome: "Marcos Garcia",
   email: "marcos.asgarcia@gmail.com",
   twitter: "@msilvagarcia",
   facebook: "facebook.com/marcos.asgarcia"
};

Frameworks PHP