SlideShare una empresa de Scribd logo
1 de 58
Descargar para leer sin conexión
Componentes Transformers: 
combinando o melhor 
de cada framework 
Flávio Gomes da Silva Lisboa 
www.fgsl.eti.br
http://phptranslationfestbrasil.github.io/
Quem sou eu? 
● Chefe do setor de adequação do ExpressoV3 em Curitiba
Quem sou eu?
FISL LATINOWARE 
Quem sou eu? 
● Fui palestrante e instrutor em vários eventos
Quem sou eu? 
● Leciono a disciplina Programação PHP Orientada a Objetos 
com Testes Unitários no curso de especialização em 
Desenvolvimento de Aplicações Web na UniCesumar.
Quem sou eu? 
● Sou autor dos livros:
http://romocavaleirodoespaco.blogspot.com.br
Resumo 
Nesta palestra iremos aprender como combinar 
componentes de diferentes frameworks dentro 
de uma mesma aplicação sem criar problemas 
de manutenção
Dúvida 
Você vai falar sobre como combinar 
frameworks, enquanto tem um cara falando 
sobre um futuro sem frameworks? 
Frameworks... 
¡No más!
Esclarecimento 
Não é porque algo parece não funcionar direito 
que você tem de desistir de usar.
Conselho 
Seja o cara que sabe usar os recursos que tem.
Descrição 
Inicialmente trataremos sobre padrões de 
construção de componentes, para então falar 
sobre interoperabilidade entre aplicações PHP 
e bibliotecas de componentes interoperáveis. 
Finalmente mostraremos exemplos de 
combinações de componentes de diferentes 
frameworks.
Preâmbulo 
Tudo que falaremos aqui trata de manutenção 
de software. Se você vai fazer software pra ser 
jogado fora, não há aplicação para o que 
falaremos.
Preâmbulo 
Mas se você vai fazer software que será 
mantido, atualizado, evoluído e aperfeiçoado, 
então deveria se preocupar com os tópicos que 
abordaremos.
Com que seu código parece? 
Uso de componentes inadequados?
Com que seu código parece? 
Não entendeu o design pattern Adapter?
Com que seu código parece? 
Este pelo menos tem fraco acoplamento...
Código Emergencial 
Precisamos fazer 
uma GRANDE 
mudança 
IMEDIATAMENTE! 
Preciso fazer um 
código que 
funcione LOGO!
Cenário 
Fatos: 
● Você precisa implementar rápido 
● Não dá tempo de aplicar a melhor solução 
● Não dá tempo de achar alguém que 
implementou a melhor solução. 
● A equipe trabalha sobre o Princípio Scooby- 
Doo. 
Tartaglia Cardano
VOU FAZER DE 
QUALQUER JEITO 
AGORA, DEPOIS EU 
MELHORO. 
NUNCA VAI 
MELHORAR!
Padrões de Construção de 
Componentes 
Você pode criar um componente incompleto. 
Só precisa prepará-lo para crescer.
Padrões de Construção de 
Componentes 
Pense no futuro! 
Só precisa prepará-lo para crescer.
Padrões de Construção de 
Componentes 
Hoje você não precisa traduzir sua aplicação. 
Mas e amanhã? 
Ninguém pediu ainda, então não posso perder tempo 
fazendo algo que não me pagaram pra fazer. 
Você pode criar uma função ou método para 
tradução... que apenas devolva o que recebeu. 
Isso evitará que no futuro você tenha de alterar 
dezenas (ou centenas) de arquivos para dar suporte à 
tradução.
Padrões de Construção de 
Componentes 
Crie código extensível. 
Permita que alguém conclua sua obra.
Interoperabilidade 
Faça seu software conversar com outros. 
Use protocolos de comunicação compreensíveis 
por outras aplicações, preferencialmente 
abertos. 
No caso de PHP, faça com que seus 
componentes possam utilizar ou ser utilizados 
por outros componentes PHP facilmente.
Interoperabilidade 
●Como encontrar classes 
●Como escrever código 
●Como tratar log
Interoperabilidade
Combinações de Componentes 
Isto é um pleonasmo... 
Componentes existem para serem combinados
Combinações de Componentes 
Não basta ter as peças. Você precisa aprender a 
ser um Mestre Construtor.
Frameworks 
Frameworks contém componentes. 
Diferentes frameworks tem diferentes 
componentes para os mesmos propósitos. 
É possível combinar componentes de 
frameworks diferentes, desde que eles sejam 
interoperáveis.
Componentes Desacoplados
DEVASTATOR
FRAMEWORK FULL STACK
DEVASTATOR 
SUPERION
FRAMEWORK FULL STACK 
FRAMEWORK FULL STACK
DEVASTATOR 
SLUDGE 
SWOOP 
GRIMLOCK 
SNARL SLAG
FRAMEWORK FULL STACK 
MICROFRAMEWORK 
MICROFRAMEWORK 
MICROFRAMEWORK 
MICROFRAMEWORK MICROFRAMEWORK
Frameworkities 
A Doença dos Frameworks 
“Frameworkitis is the disease that a framework wants to do 
too much for you or it does it in a way that you don't want 
but you can't change it. It's fun to get all this functionality for 
free, but it hurts when the free functionality gets in the way. But 
you are now tied into the framework. To get the desired 
behavior you start to fight against the framework. And at 
this point you often start to lose, because it's difficult to bend 
the framework in a direction it didn't anticipate.” 
Erich Gamma 
http://www.artima.com/lejava/articles/reuseP.html
Cuidado ao 
entregar o 
controle!
MVC: 
O Ponto Crítico dos Frameworks 
A implementação do architecture pattern MVC 
(Model View Controller) geralmente é a que tem 
o maior conjunto de acoplamentos.
MVC: 
O Ponto Crítico dos Frameworks 
Ao optar por uma implementação MVC 
específica, estamos assinando um contrato 
com várias cláusulas de obrigação, para 
usufruir de benefícios oferecidos por ela.
MVC: 
O Ponto Crítico dos Frameworks 
Procure uma implementação flexível, 
configurável, que permita injeção de 
dependências, para que você possa trocar 
implementações custosas por alternativas mais 
leves (ou ter a possibilidade de obliterar 
processos).
MVC: 
O Ponto Crítico dos Frameworks 
A implementação MVC não pode ser um 
televisor que não funciona sem controle remoto!
MVC: 
O Ponto Crítico dos Frameworks 
A implementação MVC deve permitir que você 
escolha os componentes que realmente 
precisa. 
Ela deve ser capaz de não fazer nada além do 
necessário.
MVC: 
O Ponto Crítico dos Frameworks 
● Cuidado com as unidades de reuso dos 
frameworks! 
● Bundles e modules, por exemplo, são 
reusáveis diretamente apenas por seus 
respectivos gerenciadores (Symfony, Zend). 
● Bibliotecas são mais reutilizáveis que 
estruturas modulares de implementações 
MVC!
Orquestre componentes!
Escolha o mais adequado para 
cada problema!
Use Composer para harmonizar 
dependências!
Use Composer para harmonizar 
dependências! 
{ 
"require": { 
"monolog/monolog": "1.0.*" 
} 
}
Não crie laços! 
CAMADAS DE SUA APLICAÇÃO 
FRAMEWORK 1 FRAMEWORK 2 FRAMEWORK 3
Não crie laços! 
CAMADAS DE SUA APLICAÇÃO 
X 
FRAMEWORK 1 FRAMEWORK 2 FRAMEWORK 3
Não crie laços! 
CAMADAS DE SUA APLICAÇÃO 
API CENTRAL DE SUA APLICAÇÃO 
FRAMEWORK 1 FRAMEWORK 2 FRAMEWORK 3
Não crie laços! 
CAMADAS DE SUA APLICAÇÃO 
API CENTRAL DE SUA APLICAÇÃO 
FRAMEWORK 1 FRAMEWORK 2 FXRAMEWORK 3
Não crie laços! 
CAMADAS DE SUA APLICAÇÃO 
API CENTRAL DE SUA APLICAÇÃO 
FRAMEWORK 1 FRAMEWORK 2 FRAMEWORK 4
Perguntas?
www.fgsl.eti.br

Más contenido relacionado

La actualidad más candente

Escrevendo C# moderno 2019 - MVPConf
Escrevendo C# moderno 2019 - MVPConfEscrevendo C# moderno 2019 - MVPConf
Escrevendo C# moderno 2019 - MVPConfAntonio Maniero
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...iMasters
 
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuaisJavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuaisWilliam Oliveira
 
Seja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoSeja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoAlexandre Andrade
 
Introdução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsIntrodução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsCloves Moreira Junior
 
MVC com Zend Framework
MVC com Zend FrameworkMVC com Zend Framework
MVC com Zend FrameworkFlávio Lisboa
 
Dojo iOS Básico - Aula 1
Dojo iOS Básico - Aula 1Dojo iOS Básico - Aula 1
Dojo iOS Básico - Aula 1Gustavo Barbosa
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Renato Groff
 
Primeiros passos para estruturar uma equipe front-end
Primeiros passos para estruturar uma equipe front-endPrimeiros passos para estruturar uma equipe front-end
Primeiros passos para estruturar uma equipe front-endDiego Eis
 
Desmistificando Design Patterns
Desmistificando Design PatternsDesmistificando Design Patterns
Desmistificando Design PatternsMaicon Heck
 
Elmish com xamarin.forms
Elmish com xamarin.formsElmish com xamarin.forms
Elmish com xamarin.formsLucas Teles
 
HTML5, JAVASCRIPT E JQUERY
HTML5, JAVASCRIPT E JQUERYHTML5, JAVASCRIPT E JQUERY
HTML5, JAVASCRIPT E JQUERYRenato Melo
 
O que você precisa saber para se tornar um dev front-end
O que você precisa saber para se tornar um dev front-endO que você precisa saber para se tornar um dev front-end
O que você precisa saber para se tornar um dev front-endDiego Eis
 
Femug #9 iniciando com testes em node js!
Femug #9   iniciando com testes em node js!Femug #9   iniciando com testes em node js!
Femug #9 iniciando com testes em node js!Leandro Nishijima
 

La actualidad más candente (19)

Escrevendo C# moderno 2019 - MVPConf
Escrevendo C# moderno 2019 - MVPConfEscrevendo C# moderno 2019 - MVPConf
Escrevendo C# moderno 2019 - MVPConf
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
 
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuaisJavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
 
A saga do desenvolvedor java
A saga do desenvolvedor javaA saga do desenvolvedor java
A saga do desenvolvedor java
 
Seja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoSeja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinho
 
Introdução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsIntrodução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular js
 
MVC com Zend Framework
MVC com Zend FrameworkMVC com Zend Framework
MVC com Zend Framework
 
Dojo iOS Básico - Aula 1
Dojo iOS Básico - Aula 1Dojo iOS Básico - Aula 1
Dojo iOS Básico - Aula 1
 
Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
Primeiros passos para estruturar uma equipe front-end
Primeiros passos para estruturar uma equipe front-endPrimeiros passos para estruturar uma equipe front-end
Primeiros passos para estruturar uma equipe front-end
 
PHP Anti Patterns
PHP Anti PatternsPHP Anti Patterns
PHP Anti Patterns
 
Desmistificando Design Patterns
Desmistificando Design PatternsDesmistificando Design Patterns
Desmistificando Design Patterns
 
Porque PHP?
Porque PHP?Porque PHP?
Porque PHP?
 
Elmish com xamarin.forms
Elmish com xamarin.formsElmish com xamarin.forms
Elmish com xamarin.forms
 
HTML5, JAVASCRIPT E JQUERY
HTML5, JAVASCRIPT E JQUERYHTML5, JAVASCRIPT E JQUERY
HTML5, JAVASCRIPT E JQUERY
 
O que você precisa saber para se tornar um dev front-end
O que você precisa saber para se tornar um dev front-endO que você precisa saber para se tornar um dev front-end
O que você precisa saber para se tornar um dev front-end
 
Femug #9 iniciando com testes em node js!
Femug #9   iniciando com testes em node js!Femug #9   iniciando com testes em node js!
Femug #9 iniciando com testes em node js!
 

Destacado

Sete Passos Para Um Programador De Sucesso
Sete Passos Para Um Programador De SucessoSete Passos Para Um Programador De Sucesso
Sete Passos Para Um Programador De SucessoPlaneta Código
 
Introdução à análise orientada a objetos parte 6
Introdução à análise orientada a objetos parte 6Introdução à análise orientada a objetos parte 6
Introdução à análise orientada a objetos parte 6ariovaldodias
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1ariovaldodias
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design PatternsLucas Simões Maistro
 
Orientação a Objetos - Da Teoria a Pratica
Orientação a Objetos - Da Teoria a PraticaOrientação a Objetos - Da Teoria a Pratica
Orientação a Objetos - Da Teoria a Praticaelliando dias
 
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?tdc-globalcode
 
Como escolher um framework web
Como escolher um framework webComo escolher um framework web
Como escolher um framework webRafael Carneiro
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Anderson Araújo
 

Destacado (12)

Sete Passos Para Um Programador De Sucesso
Sete Passos Para Um Programador De SucessoSete Passos Para Um Programador De Sucesso
Sete Passos Para Um Programador De Sucesso
 
Introdução à análise orientada a objetos parte 6
Introdução à análise orientada a objetos parte 6Introdução à análise orientada a objetos parte 6
Introdução à análise orientada a objetos parte 6
 
4
44
4
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design Patterns
 
Framework
FrameworkFramework
Framework
 
Patterns
PatternsPatterns
Patterns
 
Orientação a Objetos - Da Teoria a Pratica
Orientação a Objetos - Da Teoria a PraticaOrientação a Objetos - Da Teoria a Pratica
Orientação a Objetos - Da Teoria a Pratica
 
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
 
Como escolher um framework web
Como escolher um framework webComo escolher um framework web
Como escolher um framework web
 
Black sabbath
Black sabbathBlack sabbath
Black sabbath
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
 

Similar a Componentes Transformers: Combinando o melhor de cada framework

Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPjesuinoPower
 
O que é framework
O que é frameworkO que é framework
O que é frameworkfcdigital
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gofYan Justino
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patternsAndre Baltieri
 
Não deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkNão deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkGiuseppe Lopes
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: IntroduçãoJugVale
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoComunidade NetPonto
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
 
Kraftwagen - DrupalCamp SP 2015
Kraftwagen - DrupalCamp SP 2015Kraftwagen - DrupalCamp SP 2015
Kraftwagen - DrupalCamp SP 2015Handrus Nogueira
 
DrupalCamp SP 2015 - Kraftwagen por Handrus Nogueira
DrupalCamp SP 2015 -  Kraftwagen por Handrus NogueiraDrupalCamp SP 2015 -  Kraftwagen por Handrus Nogueira
DrupalCamp SP 2015 - Kraftwagen por Handrus NogueiraTaller Negócio Digitais
 
Kraftwagen, porque fazer builds - Drupal camp sp 2015
Kraftwagen, porque fazer builds - Drupal camp sp 2015Kraftwagen, porque fazer builds - Drupal camp sp 2015
Kraftwagen, porque fazer builds - Drupal camp sp 2015Handrus Nogueira
 

Similar a Componentes Transformers: Combinando o melhor de cada framework (20)

PHPZEIRO: Adote um framework
PHPZEIRO: Adote um frameworkPHPZEIRO: Adote um framework
PHPZEIRO: Adote um framework
 
Conhecendo o Spring
Conhecendo o SpringConhecendo o Spring
Conhecendo o Spring
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
O que é framework
O que é frameworkO que é framework
O que é framework
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gof
 
Java: Por onde começar nos dias de hoje?
Java: Por onde começar nos dias de hoje?Java: Por onde começar nos dias de hoje?
Java: Por onde começar nos dias de hoje?
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patterns
 
Não deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkNão deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do framework
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: Introdução
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 
Strategy pattern
Strategy patternStrategy pattern
Strategy pattern
 
Kraftwagen - DrupalCamp SP 2015
Kraftwagen - DrupalCamp SP 2015Kraftwagen - DrupalCamp SP 2015
Kraftwagen - DrupalCamp SP 2015
 
DrupalCamp SP 2015 - Kraftwagen por Handrus Nogueira
DrupalCamp SP 2015 -  Kraftwagen por Handrus NogueiraDrupalCamp SP 2015 -  Kraftwagen por Handrus Nogueira
DrupalCamp SP 2015 - Kraftwagen por Handrus Nogueira
 
Kraftwagen, porque fazer builds - Drupal camp sp 2015
Kraftwagen, porque fazer builds - Drupal camp sp 2015Kraftwagen, porque fazer builds - Drupal camp sp 2015
Kraftwagen, porque fazer builds - Drupal camp sp 2015
 

Más de Flávio Lisboa

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPFlávio Lisboa
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaFlávio Lisboa
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasFlávio Lisboa
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoFlávio Lisboa
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHPFlávio Lisboa
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework LaminasFlávio Lisboa
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?Flávio Lisboa
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Flávio Lisboa
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHPFlávio Lisboa
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoFlávio Lisboa
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPFlávio Lisboa
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamFlávio Lisboa
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosFlávio Lisboa
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosFlávio Lisboa
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosFlávio Lisboa
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasFlávio Lisboa
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadoresFlávio Lisboa
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)Flávio Lisboa
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Flávio Lisboa
 

Más de Flávio Lisboa (20)

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHP
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com Laminas
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com método
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework Laminas
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundo
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dados
 
Amanhecer esmeralda
Amanhecer esmeraldaAmanhecer esmeralda
Amanhecer esmeralda
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviços
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadores
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)
 

Componentes Transformers: Combinando o melhor de cada framework

  • 1. Componentes Transformers: combinando o melhor de cada framework Flávio Gomes da Silva Lisboa www.fgsl.eti.br
  • 3. Quem sou eu? ● Chefe do setor de adequação do ExpressoV3 em Curitiba
  • 5. FISL LATINOWARE Quem sou eu? ● Fui palestrante e instrutor em vários eventos
  • 6. Quem sou eu? ● Leciono a disciplina Programação PHP Orientada a Objetos com Testes Unitários no curso de especialização em Desenvolvimento de Aplicações Web na UniCesumar.
  • 7. Quem sou eu? ● Sou autor dos livros:
  • 9. Resumo Nesta palestra iremos aprender como combinar componentes de diferentes frameworks dentro de uma mesma aplicação sem criar problemas de manutenção
  • 10. Dúvida Você vai falar sobre como combinar frameworks, enquanto tem um cara falando sobre um futuro sem frameworks? Frameworks... ¡No más!
  • 11. Esclarecimento Não é porque algo parece não funcionar direito que você tem de desistir de usar.
  • 12. Conselho Seja o cara que sabe usar os recursos que tem.
  • 13. Descrição Inicialmente trataremos sobre padrões de construção de componentes, para então falar sobre interoperabilidade entre aplicações PHP e bibliotecas de componentes interoperáveis. Finalmente mostraremos exemplos de combinações de componentes de diferentes frameworks.
  • 14. Preâmbulo Tudo que falaremos aqui trata de manutenção de software. Se você vai fazer software pra ser jogado fora, não há aplicação para o que falaremos.
  • 15. Preâmbulo Mas se você vai fazer software que será mantido, atualizado, evoluído e aperfeiçoado, então deveria se preocupar com os tópicos que abordaremos.
  • 16. Com que seu código parece? Uso de componentes inadequados?
  • 17. Com que seu código parece? Não entendeu o design pattern Adapter?
  • 18. Com que seu código parece? Este pelo menos tem fraco acoplamento...
  • 19. Código Emergencial Precisamos fazer uma GRANDE mudança IMEDIATAMENTE! Preciso fazer um código que funcione LOGO!
  • 20. Cenário Fatos: ● Você precisa implementar rápido ● Não dá tempo de aplicar a melhor solução ● Não dá tempo de achar alguém que implementou a melhor solução. ● A equipe trabalha sobre o Princípio Scooby- Doo. Tartaglia Cardano
  • 21. VOU FAZER DE QUALQUER JEITO AGORA, DEPOIS EU MELHORO. NUNCA VAI MELHORAR!
  • 22. Padrões de Construção de Componentes Você pode criar um componente incompleto. Só precisa prepará-lo para crescer.
  • 23. Padrões de Construção de Componentes Pense no futuro! Só precisa prepará-lo para crescer.
  • 24. Padrões de Construção de Componentes Hoje você não precisa traduzir sua aplicação. Mas e amanhã? Ninguém pediu ainda, então não posso perder tempo fazendo algo que não me pagaram pra fazer. Você pode criar uma função ou método para tradução... que apenas devolva o que recebeu. Isso evitará que no futuro você tenha de alterar dezenas (ou centenas) de arquivos para dar suporte à tradução.
  • 25. Padrões de Construção de Componentes Crie código extensível. Permita que alguém conclua sua obra.
  • 26. Interoperabilidade Faça seu software conversar com outros. Use protocolos de comunicação compreensíveis por outras aplicações, preferencialmente abertos. No caso de PHP, faça com que seus componentes possam utilizar ou ser utilizados por outros componentes PHP facilmente.
  • 27. Interoperabilidade ●Como encontrar classes ●Como escrever código ●Como tratar log
  • 29. Combinações de Componentes Isto é um pleonasmo... Componentes existem para serem combinados
  • 30. Combinações de Componentes Não basta ter as peças. Você precisa aprender a ser um Mestre Construtor.
  • 31. Frameworks Frameworks contém componentes. Diferentes frameworks tem diferentes componentes para os mesmos propósitos. É possível combinar componentes de frameworks diferentes, desde que eles sejam interoperáveis.
  • 32.
  • 37. FRAMEWORK FULL STACK FRAMEWORK FULL STACK
  • 38. DEVASTATOR SLUDGE SWOOP GRIMLOCK SNARL SLAG
  • 39. FRAMEWORK FULL STACK MICROFRAMEWORK MICROFRAMEWORK MICROFRAMEWORK MICROFRAMEWORK MICROFRAMEWORK
  • 40. Frameworkities A Doença dos Frameworks “Frameworkitis is the disease that a framework wants to do too much for you or it does it in a way that you don't want but you can't change it. It's fun to get all this functionality for free, but it hurts when the free functionality gets in the way. But you are now tied into the framework. To get the desired behavior you start to fight against the framework. And at this point you often start to lose, because it's difficult to bend the framework in a direction it didn't anticipate.” Erich Gamma http://www.artima.com/lejava/articles/reuseP.html
  • 41. Cuidado ao entregar o controle!
  • 42. MVC: O Ponto Crítico dos Frameworks A implementação do architecture pattern MVC (Model View Controller) geralmente é a que tem o maior conjunto de acoplamentos.
  • 43. MVC: O Ponto Crítico dos Frameworks Ao optar por uma implementação MVC específica, estamos assinando um contrato com várias cláusulas de obrigação, para usufruir de benefícios oferecidos por ela.
  • 44. MVC: O Ponto Crítico dos Frameworks Procure uma implementação flexível, configurável, que permita injeção de dependências, para que você possa trocar implementações custosas por alternativas mais leves (ou ter a possibilidade de obliterar processos).
  • 45. MVC: O Ponto Crítico dos Frameworks A implementação MVC não pode ser um televisor que não funciona sem controle remoto!
  • 46. MVC: O Ponto Crítico dos Frameworks A implementação MVC deve permitir que você escolha os componentes que realmente precisa. Ela deve ser capaz de não fazer nada além do necessário.
  • 47. MVC: O Ponto Crítico dos Frameworks ● Cuidado com as unidades de reuso dos frameworks! ● Bundles e modules, por exemplo, são reusáveis diretamente apenas por seus respectivos gerenciadores (Symfony, Zend). ● Bibliotecas são mais reutilizáveis que estruturas modulares de implementações MVC!
  • 49. Escolha o mais adequado para cada problema!
  • 50. Use Composer para harmonizar dependências!
  • 51. Use Composer para harmonizar dependências! { "require": { "monolog/monolog": "1.0.*" } }
  • 52. Não crie laços! CAMADAS DE SUA APLICAÇÃO FRAMEWORK 1 FRAMEWORK 2 FRAMEWORK 3
  • 53. Não crie laços! CAMADAS DE SUA APLICAÇÃO X FRAMEWORK 1 FRAMEWORK 2 FRAMEWORK 3
  • 54. Não crie laços! CAMADAS DE SUA APLICAÇÃO API CENTRAL DE SUA APLICAÇÃO FRAMEWORK 1 FRAMEWORK 2 FRAMEWORK 3
  • 55. Não crie laços! CAMADAS DE SUA APLICAÇÃO API CENTRAL DE SUA APLICAÇÃO FRAMEWORK 1 FRAMEWORK 2 FXRAMEWORK 3
  • 56. Não crie laços! CAMADAS DE SUA APLICAÇÃO API CENTRAL DE SUA APLICAÇÃO FRAMEWORK 1 FRAMEWORK 2 FRAMEWORK 4