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

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

on

  • 1,857 views

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.

Statistics

Views

Total Views
1,857
Views on SlideShare
1,846
Embed Views
11

Actions

Likes
1
Downloads
11
Comments
0

1 Embed 11

http://www.linkedin.com 11

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • 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 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á
    • 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
    • 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 sistemaSoluçã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 noconstrutor 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 mesmasqueries
    • 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éricospara 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)
    • 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.
    • 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
    • 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!