1. Impacto dos Frameworks PHP
Conselhos e relatos de um desenvolvedor
Campinas
Thiago Rodrigues 15/07/2015
http://xthiago.com
2. Thiago Rodrigues
Bacharel em Sistemas de Informação pela Universidade do
Estado de Minas Gerais (UEMG);
Programador PHP há 10 anos;
Entusiasta do software livre;
Organizador do PHP Campinas;
Colaborador na CI&T.
Campinas
3. Agenda
O que é framework;
O que me levou a abandonar meu "framework caseiro”;
Benefícios;
Tipos de frameworks;
Apresentação de alguns dos principais frameworks PHP;
Escolhendo o framework;
Erros comuns;
Futuro dos frameworks PHP;
Perguntas & respostas.
Campinas
4. DEFINIÇÃO TEÓRICA:
[..]é uma abstração que une códigos comuns entre vários projetos
de software provendo uma funcionalidade genérica[..]
https://pt.wikipedia.org/wiki/Framework
O que é um framework?
7. ALGUMAS TAREFAS: aparar grama, podar plantas, irrigar, cavar, etc…
Quais tarefas são necessárias para cuidar
deste jardim?
8. Se o jardineiro não tivesse essas ferramentas…
COMO SERIA? produtividade; qualidade do trabalho; satisfação do cliente.
9. Se o jardineiro não tivesse essas ferramentas…
EM SUMA: Ele gastaria tempo considerável criando ferramentas (de qualidade duvidosa)
ao invés de cuidar do jardim;
10. Reinventando a roda
HÁ ALGUNS ANOS ATRÁS NOTEI QUE:
gastava mais tempo desenvolvendo/evoluindo meu "próprio framework" do que
solucionando problemas de negócios;
11. Benefícios ao adotar um framework de mercado
PRINCIPAIS:
+ funcionalidades;
+ qualidade no design do código;
+ documentado;
+ padronizado;
+ confiável/testado;
+ especialistas;
+ casos de uso;
+ reutilização de código;
- custo de manutenção;
- custo de treinamento;
12. Tipos de frameworks
Full Stack Micro CMS/aplicação específica
• Muitas funcionalidades;
• Maior curva de aprendizado;
• Maior gama de módulos;
• Mais pesado (na config
padrão);
• Geralmente impõe estrutura
organizacional e
componentes básicos;
• Funcionalidades básicas;
• Menor curva de aprendizado;
• Menor quantidade de
módulos;
• Mais leve (na config padrão);
• Flexível quanto a estrutura
organizacional e
componentes básicos;
• Muitas funcionalidades
relacionadas ao nicho
específico;
• Geralmente possuem grande
gama de módulos;
• Geralmente são difíceis de se
adaptar para outros nichos.
16. Qual framework escolher?
NÃO EXISTE BALA DE PRATA.
Depende de:
• Objetivos do projeto;
• Requisitos;
• Prazo de entrega;
• Orçamento;
• Habilidade do time;
• Vida útil do software;
17. Erros comuns – Saber desenvolver só com 1 framework
Quanto mais ferramentas conhecer, melhor. Lembre-se: cada uma possui sua indicação.
18. Erros comuns – Buscar soluções somente na comunidade do framework
Esqueceu que o framework usa PHP? Tem muito projeto bom por ai.
Não encontrou nada em PHP? Procure por nodejs, Linux, etc…
19. Erros comuns – Amar o framework de forma irracional
Não preciso comentar, né?
20. Erros comuns – Usar um framework morto ou zumbi
Será que ele ainda é relevante? Será que ainda possui uma comunidade forte?
Quais são as perspectivas de longo prazo?
21. Erros comuns – Usar um framework sem testes automatizados
A cada atualização uma nova explosão? Ele precisa ter algum tipo de teste
automatizado para garantir que não hajam quebras.
22. Erros comuns – Acoplar código da aplição ao framework
Um dia você vai querer atualizar a versão ou trocar de framework..
E ai, vai reescrever tudo?
23. Futuro sem frameworks Full Stack?
Gerenciador de dependências, padrões/convenções da comunidade,
desacoplamento dos componentes… "seu framework" em minutos.
http://semver.org/
24. O futuro é agora…
Usam componentes Symfony:
• Drupal 8
• phpBB
• Laravel
• Joomla!
• Composer
• Magento
• Silex
• PHPUnit
• Doctrine
• Behat
• Sylius
• + em http://symfony.com/projects
Ainda nesse ano:
Zend Framework 3 – foco em simplicidade, reusabilidade e
performance.
Symfony 3 – evolução da versão 2.
PHP 7 –performance, tipos escalares, etc.
Drupal 8 – totalmente reformulado em uma abordagem mais
moderna.
Essa seria uma boa definição formal, mas sequer dei-me ao trabalho de decorá-la.
Na realidade isso é um framework. Essas ferramentas podem ser utilizados para os mais diversos trabalhos. Se o seu projeto é colocar um quadro na parede, porque criar sua própria ferramenta se milhares de pessoas já tiveram o mesmo problema e utilizaram um martelo?
Pedir sugestões de tarefas para platéia…
Como vocês acham que seria o trabalho dele? O patrão dele ficaria satisfeito? Como seria a qualidade do trabalho dele?
Foi nesse momento que há 3 anos atrás percebi que estava gastanto meu tempo para criar meu próprio framework ao invés de solucionar problemas de negócios.