SlideShare ist ein Scribd-Unternehmen logo
1 von 38
E aí, pessoal?


         Jota Júnior

         jotavrj@gmail.com

         www.jotajunior.net

         www.jotajunior.net/latinoware
Padrões de Projeto em PHP:
Importância e implementação
Por que seguir isso ?!
The code you write makes you a programmer.
The code you delete makes you a good one.
The code you don't 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á
Por que seguir isso?

“Sempre escreva seu código como se o cara que
irá mantê-lo fosse um psicopata violento que sabe
onde você mora.”
- Martin Golding



“As vezes ele é...”
– Jota Júnior
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
Padrões abordados

Data Access Object (DAO)

Value Object (VO)

Singleton

Model-View-Controller (MVC)
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)
Value Object (VO)

Problema
Você tem que manipular um dado antes de
 inserir no BD, mas está tudo espalhado no
 sistema


Solução
Criar um objeto para lidar com a atribuição de
 valores a variáveis que serão usadas em
 consultas ao BD
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.
Ou assim...

              Os métodos
              mágicos dão uma
              flexibilidade muito
              interessante, além
              de enxugar
              código.
E como o Value Object pode me ajudar?



Criará sistema de cadastro de usuários


Encriptará senha usando md5 e um SALT.
E como o Value Object pode me ajudar?




Operações com senha usadas em vários lugares do sistema.
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 !
Implementação do Value Object




                                                  Controle centralizado.




Obs.: Alguns autores afirmam que os setters do VO têm que ser atribuídos no
construtor da classe ou, como já apresentei, métodos mágicos.
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.
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.
Como isso me ajudaria?
 Mudar salário somente de um programador.
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.
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
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
E como o DAO pode me ajudar?




Queries espalhadas por todo o sistema
Ao mudar sintaxe, trabalho de mudar em vários arquivos as mesmas
queries
Implementação do DAO
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.
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.
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.
Implementação do MVC

 O usuário inicia uma ação, chamando o
 Controller;




Obs.: Apenas métodos genéricos
para exemplificar.
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.
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.
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
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)
Singleton

Problema
É 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.
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 classe

Limitação: funciona somente em tempo de execução
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
Exemplo de implementação do Singleton


                                  Abriga instância




                                           Retorna
                                           instância
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
Agora já sei padrões de projeto!




                 Só que não!
Padroẽs de Projeto em PHP - Importância e implementação
Padroẽs de Projeto em PHP - Importância e implementação

Weitere ähnliche Inhalte

Kürzlich hochgeladen

Kürzlich hochgeladen (8)

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Empfohlen

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Empfohlen (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

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

  • 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 don't 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 que irá mantê-lo fosse um psicopata violento que sabe onde 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 sistema Soluçã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 no construtor 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 mesmas queries
  • 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éricos para 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. Singleton Problema É 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 classe Limitaçã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!