Padroẽs de Projeto em PHP - Importância e implementação

  • 1,612 views
Uploaded on

Apresentação sobre padrões de projeto com exemplos em PHP para a IX Conferência Latino-Americana de Software Livre, em 17/10/2012.

Apresentação sobre padrões de projeto com exemplos em PHP para a IX Conferência Latino-Americana de Software Livre, em 17/10/2012.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,612
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
17
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. E aí, pessoal? Jota Júnior jotavrj@gmail.com www.jotajunior.net www.jotajunior.net/latinoware
  • 2. Padrões de Projeto em PHP:Importância e implementação
  • 3. Por que seguir isso ?!The code you write makes you a programmer.The code you delete makes you a good one.The code you dont have to write makes you a great one.- Mario Fusco WTF→ Bom programador (capacidade de abstração)→ Reutilização de código→ Trabalho em equipe→ O poder da Mãe Diná
  • 4. Por que seguir isso?“Sempre escreva seu código como se o cara queirá mantê-lo fosse um psicopata violento que sabeonde você mora.”- Martin Golding“As vezes ele é...”– Jota Júnior
  • 5. ConceituaçãoPadrões de Projeto são regras de modelação do softwareNão são sobre o código em si, são conceitosMarca registrada de um bom programadorAplicáveis a quase todas as linguagens
  • 6. Padrões abordadosData Access Object (DAO)Value Object (VO)SingletonModel-View-Controller (MVC)
  • 7. Conceituação do Value ObjectÉ um objeto feito para lidar com os atributos de uma classeAtributos da classe se referem a campos de uma tabela do Banco de Dados Centraliza o controle sobre o que será inserido no Banco de Dados.Feito através de getters (feitos para resgatar os valores dos atributos) e setters (para manipular a inserção de valores nos atributos)
  • 8. Value Object (VO)ProblemaVocê tem que manipular um dado antes de inserir no BD, mas está tudo espalhado no sistemaSoluçãoCriar um objeto para lidar com a atribuição de valores a variáveis que serão usadas em consultas ao BD
  • 9. Implementação do Value Object Como podem ver, foram criados apenas métodos para lidar com os atributos da classe, que se referem a campos do BD, que serão inseridos posteriormente. É provavelmente a classe mais simples que você já fez.
  • 10. Ou assim... Os métodos mágicos dão uma flexibilidade muito interessante, além de enxugar código.
  • 11. E como o Value Object pode me ajudar?Criará sistema de cadastro de usuáriosEncriptará senha usando md5 e um SALT.
  • 12. E como o Value Object pode me ajudar?Operações com senha usadas em vários lugares do sistema.
  • 13. E como o Value Object pode me ajudar? Necessidade de usar um novo SALT.Mudança feita manualmente, manutenção trabalhosa, repetição de código e controle descentralizado.Qual a solução? VALUE OBJECT !
  • 14. Implementação do Value Object Controle centralizado.Obs.: Alguns autores afirmam que os setters do VO têm que ser atribuídos noconstrutor da classe ou, como já apresentei, métodos mágicos.
  • 15. Conceito de imutabilidade em Value ObjectsO Value Object também pode ser usado para conferir imutabilidade a uma classe e lidar com classes especiais, como dinheiro, data, etc. Dois objetos são conceitualmente iguais quando contêm as mesmas informações VO é único e imutável, qualquer alteração que faça no objeto retorna um novo objeto com as novas configurações da alteração. Em suma, mudar um Value Object quer dizer criar um novo.
  • 16. Conceito de imutabilidade em Value Objects Seta valor inicial que pertencerá à classe Dinheiro. Ao tentar mudar um Value Object, ele retorna um novo objeto com as propriedades da modificação.
  • 17. Como isso me ajudaria? Mudar salário somente de um programador.
  • 18. Data Access Object (DAO)Problema Requisições ao banco espalhadas desorganizadamente pelo código, dificultando a manutenção e causando duplicação.Solução Criar um objeto para gerenciar acesso aos dados do BD.
  • 19. Conceituação do DAOObjeto para lidar com acesso a dados do BDRecebe e retorna seu respectivo Value Object Contém métodos de inserção, alteração, consulta e exclusão de registros.Centraliza manipulação de queriesEvita duplicação de código
  • 20. E como o DAO pode me ajudar?Situação:Há a necessidade de trocar de banco de dadosA sintaxe das queries muda de um para outro
  • 21. E como o DAO pode me ajudar?Queries espalhadas por todo o sistemaAo mudar sintaxe, trabalho de mudar em vários arquivos as mesmasqueries
  • 22. Implementação do DAO
  • 23. E como o DAO pode me ajudar? Só mudar a query aqui, e usar o método pelo sistema. Reafirmando, recebe e retorna um Value Object.
  • 24. Model-View-Controller (MVC)ProblemaSeu sistema é integrado de uma forma em que a parte que retorna o HTML é misturada com a parte lógica e a parte que recebe dados do usuário.Solução Dividir estrutura do sistema em domínios, em que cada domínio, separando a ‘mistura’ acima citada.
  • 25. Conceituação do MVCMais complexo que os demais vistosAbsorvida depois de treino sólido, não sairá daqui mestre em MVCUsado na maioria dos Frameworks atuaisSepara a lógica da aplicação da lógica de exibição e da lógica de controle decisional.
  • 26. Implementação do MVC O usuário inicia uma ação, chamando o Controller;Obs.: Apenas métodos genéricospara exemplificar.
  • 27. Implementação do MVC Finalmente, o View é chamado, e mostra ao usuário as mudanças que ele efetuou. No caso, mudança efetuada foi o cadastramento de um novo usuário.
  • 28. Implementação do MVC A ação que ele requisitou é interpretada é manipulada pelo Model, que abriga a lógica real da aplicação; O Model que lida com interações com o banco de dados.
  • 29. Conceituação do MVCÉ possível integrar outros padrões de projeto às suas camadasNo View, por exemplo, é possível (e até aconselhável) utilizar template engines como SmartySeparar diretórios por camadas, por exemplo, um diretório somente para os controllers das classes, e assim em diante
  • 30. E como o MVC pode me ajudar?Exemplo de implementação já exposto anteriormenteAo separar a lógica do HTML e unir pelo controller, divide tarefas e torna a manutenção e aplicação de novas tecnologias mais fácil (como usar Smarty ou trocar por outra template engine, no View)
  • 31. SingletonProblemaÉ necessário que uma instância persista em toda parte da aplicação sem ser duplicado, mas fica se duplicando.SoluçãoCria-se um atributo privado para abrigar a instância e um método para retorná-la. Ambos são estáticos.
  • 32. Conceituação do SingletonFeito para retornar sempre a mesma instânciaO atributo e método são estáticos para poderem ser acessados sem instanciar um novo objeto, assim evitando a duplicação.É um modelo aplicável a quase qualquer classeLimitação: funciona somente em tempo de execução
  • 33. Exemplo de Implementação do SingletonNecessário criar conexão com o banco de dadosUsar a mesma conexão em vários lugares diferentes do sistema
  • 34. Exemplo de implementação do Singleton Abriga instância Retorna instância
  • 35. Considerações FinaisImportância dos padrões de projetoVários podem ser usados ao mesmo tempoAdaptá-los da forma mais eficiente é a marca de um bom programador
  • 36. Agora já sei padrões de projeto! Só que não!