Inversão de Controle e Injeção     de Dependência no         Symfony 2    E faça-se a luz!           Julho 2012
Quem sou eu…• Welington Veiga  – Formado em Ciência da Computação pela UFJF  – Programador Java e PHP  – Trabalho com PHP ...
Do que estamos Falando?
Reutilização? Não Acredito.
Inversão de Controle
O Controle padrão
O Controle PadrãoSuponha que nossa aplição aplicaçãoprecisa de um Cofre:•   Ele Precisa Registrar Tudo o que Contém•   Pre...
Problemas
Problemas
Inversão de Controle
E Daí?• Envio de Logs por e-mail• Tipos de Criptografia  • Diferentes     Implementações de criptografias• Exigir confirma...
Dúvidas?
Injeção de Dependência
O Container
Como?Dependência               Dependente    Tranca                          Cofre              Container    Logger       ...
Um Exemplo
E Daí?•   Por que não utilizar um Singleton?•   Por que, então, não utilizar um Factory?•   Isso não é lento?•   Eu não pr...
Duvidas?
Configurando a Injeção de Dependências
Mais sobre DI no Sf2Existem 2 tipos de Injeção dedependência:1. Constructor Injection2. Setter Injection
O Diabo está nos detalhes!
Escopo• Request• Prototype
Importe outros arquivos!• Organização do projeto• Reaproveitamento• Diferente poder de   expressão  • YAML , XML e PHP
Constantes PHP
Quanta Configuração…•   Desacoplamento de dependências•   Torna claro o objetivo de cada classe•   Testabilidade•   Separa...
Sinta o poder em suas maos…
Exemplos Reais Cache
Banco de Dados
Template Engine
•Email•Logs•Sistema de Login•Estatisticas de Usuários•Gerador de Relatórios•Gerenciador de Sessão•Manipulador de Arquivos•...
Duvidas?
Anti-Patterns             “Não existe almoço grátis”•   Dependência Cíclica•   Propagação de Dependências•   Construtor de...
Então…. É só isso 
Mantenha contato!Facebook    http://www.facebook.com/welington.veigaTwitter     @welingtonveigaGtalk       welington.veiga...
Obrigado!
Upcoming SlideShare
Loading in …5
×

Sfcon 2012

860 views

Published on

Apresentação 'Inversão de Controle e Injeção de Dependência no Symfony 2 - E faça-se a luz!' no SfCon 2012

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
860
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Sfcon 2012

  1. 1. Inversão de Controle e Injeção de Dependência no Symfony 2 E faça-se a luz! Julho 2012
  2. 2. Quem sou eu…• Welington Veiga – Formado em Ciência da Computação pela UFJF – Programador Java e PHP – Trabalho com PHP há mais de 4 anos – Atualmente trabalho na • JEE, Struts, Hibernate – Freelancer • Groovy, PHP, Symfony, JPA, Spring
  3. 3. Do que estamos Falando?
  4. 4. Reutilização? Não Acredito.
  5. 5. Inversão de Controle
  6. 6. O Controle padrão
  7. 7. O Controle PadrãoSuponha que nossa aplição aplicaçãoprecisa de um Cofre:• Ele Precisa Registrar Tudo o que Contém• Precisa logar toda vez que seu conteúdo for alterado• Precisamos de um sistema de segurança
  8. 8. Problemas
  9. 9. Problemas
  10. 10. Inversão de Controle
  11. 11. E Daí?• Envio de Logs por e-mail• Tipos de Criptografia • Diferentes Implementações de criptografias• Exigir confirmação via WebService antes de abrir o cofre• Avisar a empresa de segurança caso haja erro
  12. 12. Dúvidas?
  13. 13. Injeção de Dependência
  14. 14. O Container
  15. 15. Como?Dependência Dependente Tranca Cofre Container Logger Configurações XML, YAML, PHP
  16. 16. Um Exemplo
  17. 17. E Daí?• Por que não utilizar um Singleton?• Por que, então, não utilizar um Factory?• Isso não é lento?• Eu não preciso reutilizar código, não vale o esforço
  18. 18. Duvidas?
  19. 19. Configurando a Injeção de Dependências
  20. 20. Mais sobre DI no Sf2Existem 2 tipos de Injeção dedependência:1. Constructor Injection2. Setter Injection
  21. 21. O Diabo está nos detalhes!
  22. 22. Escopo• Request• Prototype
  23. 23. Importe outros arquivos!• Organização do projeto• Reaproveitamento• Diferente poder de expressão • YAML , XML e PHP
  24. 24. Constantes PHP
  25. 25. Quanta Configuração…• Desacoplamento de dependências• Torna claro o objetivo de cada classe• Testabilidade• Separação de Responsabilidades• Facilidade a troca de implementações• Reduz a complexidade
  26. 26. Sinta o poder em suas maos…
  27. 27. Exemplos Reais Cache
  28. 28. Banco de Dados
  29. 29. Template Engine
  30. 30. •Email•Logs•Sistema de Login•Estatisticas de Usuários•Gerador de Relatórios•Gerenciador de Sessão•Manipulador de Arquivos•Leitor de XML
  31. 31. Duvidas?
  32. 32. Anti-Patterns “Não existe almoço grátis”• Dependência Cíclica• Propagação de Dependências• Construtor de muitos argumentos• Dependência do Container• Utilizar o Container nos testes unitários
  33. 33. Então…. É só isso 
  34. 34. Mantenha contato!Facebook http://www.facebook.com/welington.veigaTwitter @welingtonveigaGtalk welington.veiga@gmail.comSkype Welington.veiga
  35. 35. Obrigado!

×