Padroẽs de Projeto em PHP - Importância e implementação
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

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

  • 2,060 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
2,060
On Slideshare
2,048
From Embeds
12
Number of Embeds
2

Actions

Shares
Downloads
17
Comments
0
Likes
1

Embeds 12

http://www.linkedin.com 11
https://www.linkedin.com 1

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!