componentes transformers: combinando o melhor de cada framework
TRANSCRIPT
![Page 1: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/1.jpg)
Componentes Transformers: combinando o melhor
de cada framework
Flávio Gomes da Silva Lisboa
www.fgsl.eti.br
![Page 2: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/2.jpg)
http://phptranslationfestbrasil.github.io/
![Page 3: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/3.jpg)
Quem sou eu?
● Chefe do setor de adequação do ExpressoV3 em Curitiba
![Page 4: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/4.jpg)
Quem sou eu?
![Page 5: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/5.jpg)
FISL LATINOWARE
Quem sou eu?
● Fui palestrante e instrutor em vários eventos
![Page 6: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/6.jpg)
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.
![Page 7: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/7.jpg)
Quem sou eu?
● Sou autor dos livros:
![Page 8: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/8.jpg)
http://romocavaleirodoespaco.blogspot.com.br
![Page 9: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/9.jpg)
Resumo
Nesta palestra iremos aprender como combinar componentes de diferentes frameworks dentro de uma mesma aplicação sem criar problemas de manutenção
![Page 10: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/10.jpg)
Dúvida
Você vai falar sobre como combinar frameworks, enquanto tem um cara falando sobre um futuro sem frameworks?
Frameworks...
¡No más!
![Page 11: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/11.jpg)
Esclarecimento
Não é porque algo parece não funcionar direito que você tem de desistir de usar.
![Page 12: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/12.jpg)
Conselho
Seja o cara que sabe usar os recursos que tem.
![Page 13: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/13.jpg)
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.
![Page 14: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/14.jpg)
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.
![Page 15: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/15.jpg)
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.
![Page 16: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/16.jpg)
Com que seu código parece?
Uso de componentes inadequados?
![Page 17: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/17.jpg)
Com que seu código parece?
Não entendeu o design pattern Adapter?
![Page 18: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/18.jpg)
Com que seu código parece?
Este pelo menos tem fraco acoplamento...
![Page 19: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/19.jpg)
Código Emergencial
Precisamos fazer uma GRANDE
mudança IMEDIATAMENTE!
Preciso fazer um código que
funcione LOGO!
![Page 20: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/20.jpg)
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
![Page 21: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/21.jpg)
VOU FAZER DE QUALQUER JEITO
AGORA, DEPOIS EU MELHORO.
NUNCA VAI MELHORAR!
![Page 22: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/22.jpg)
Padrões de Construção de Componentes
Você pode criar um componente incompleto.
Só precisa prepará-lo para crescer.
![Page 23: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/23.jpg)
Padrões de Construção de Componentes
Pense no futuro!
Só precisa prepará-lo para crescer.
![Page 24: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/24.jpg)
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.
![Page 25: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/25.jpg)
Padrões de Construção de Componentes
Crie código extensível.
Permita que alguém conclua sua obra.
![Page 26: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/26.jpg)
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.
![Page 27: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/27.jpg)
Interoperabilidade
●Como encontrar classes●Como escrever código●Como tratar log
![Page 28: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/28.jpg)
Interoperabilidade
![Page 29: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/29.jpg)
Combinações de Componentes
Isto é um pleonasmo...
Componentes existem para serem combinados
![Page 30: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/30.jpg)
Combinações de Componentes
Não basta ter as peças. Você precisa aprender a ser um Mestre Construtor.
![Page 31: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/31.jpg)
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.
![Page 32: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/32.jpg)
![Page 33: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/33.jpg)
Componentes Desacoplados
![Page 34: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/34.jpg)
DEVASTATOR
![Page 35: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/35.jpg)
FRAMEWORK FULL STACK
![Page 36: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/36.jpg)
DEVASTATOR
SUPERION
![Page 37: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/37.jpg)
FRAMEWORK FULL STACK
FRAMEWORK FULL STACK
![Page 38: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/38.jpg)
DEVASTATOR
SNARL SLAG
SLUDGE
GRIMLOCK
SWOOP
![Page 39: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/39.jpg)
FRAMEWORK FULL STACK
MICROFRAMEWORK MICROFRAMEWORK
MICROFRAMEWORK
MICROFRAMEWORK
MICROFRAMEWORK
![Page 40: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/40.jpg)
FrameworkitiesA 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
![Page 41: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/41.jpg)
Cuidado ao entregar o controle!
![Page 42: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/42.jpg)
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.
![Page 43: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/43.jpg)
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.
![Page 44: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/44.jpg)
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).
![Page 45: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/45.jpg)
MVC: O Ponto Crítico dos Frameworks
A implementação MVC não pode ser um televisor que não funciona sem controle remoto!
![Page 46: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/46.jpg)
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.
![Page 47: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/47.jpg)
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!
![Page 48: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/48.jpg)
Orquestre componentes!
![Page 49: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/49.jpg)
Escolha o mais adequado para cada problema!
![Page 50: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/50.jpg)
Use Composer para harmonizar dependências!
![Page 51: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/51.jpg)
Use Composer para harmonizar dependências!
{ "require": { "monolog/monolog": "1.0.*" }}
![Page 52: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/52.jpg)
Não crie laços!
CAMADAS DE SUA APLICAÇÃO
FRAMEWORK 1 FRAMEWORK 2 FRAMEWORK 3
![Page 53: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/53.jpg)
Não crie laços!
CAMADAS DE SUA APLICAÇÃO
FRAMEWORK 1 FRAMEWORK 2 FRAMEWORK 3
X
![Page 54: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/54.jpg)
Não crie laços!
CAMADAS DE SUA APLICAÇÃO
API CENTRAL DE SUA APLICAÇÃO
FRAMEWORK 1 FRAMEWORK 2 FRAMEWORK 3
![Page 55: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/55.jpg)
Não crie laços!
CAMADAS DE SUA APLICAÇÃO
API CENTRAL DE SUA APLICAÇÃO
FRAMEWORK 1 FRAMEWORK 2 FRAMEWORK 3X
![Page 56: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/56.jpg)
Não crie laços!
CAMADAS DE SUA APLICAÇÃO
API CENTRAL DE SUA APLICAÇÃO
FRAMEWORK 1 FRAMEWORK 2 FRAMEWORK 4
![Page 57: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/57.jpg)
Perguntas?
![Page 58: Componentes Transformers: Combinando o melhor de cada framework](https://reader034.vdocuments.site/reader034/viewer/2022051516/55a373fc1a28ab725d8b4702/html5/thumbnails/58.jpg)
www.fgsl.eti.br