Canais iMasters

PHP

Construindo uma Arquitetura de Desenvolvimento em PHP 5 - Final

Espero realmente ter ajudado com esses artigos a divulgar o uso de DESIGN PATTERNS em PHP. A idéia do reuso de código, padronização, etc.

Existem muitos outros padrões de projeto e design patters (um bom site para estudar algumas outras http://www.dofactory.com/Patterns/Patterns.aspx).

Explicação Geral

Acho que deixei pendente um assunto sobre a parte da arquitetura. Muitas pessoas me perguntaram porque criei uma classe para conexão com o banco de dados e não usei uma framework de persitência. Eu não queria entrar nesse item para não ter que explicar nenhuma framework e sim a idéia.

Na parte da arquitetura é para ficar todos os seus utilitários onde todos os sistemas da sua fábrica irão usar. Você pode inserir lá todas as suas frameworks como: Lumine, que usa a idéia de mapeamentos em XML; EZPDO que tem a idéia de annotations; a ZEND FRAMEWORK e muitas outras, tornando assim a sua biblioteca rica para as suas aplicações.

Na camada negocial, é onde devem ficar as regras de negócio dos sistemas, podendo separar o código o quanto quiserem. Conheço sistemas que tem essa parte muito bem divida, dentro dessa camada várias outras, deixando o código mais especialista.

Patterns que podem também ser usadas: Business Delegate; Value Object; Session Facade; Composite Entity; Value Object Assembler;Value List Handler; Service Locator.

Ainda na camada de Negócio, a parte de acesso a dados temos: Data Acess Object; Service Activator.

Cada design pattern tem motivos (contexto) para ser usada. Você deve analisar a função de cada uma e ver qual se adequa ao seu caso e não usar somente por usar. Do contrário, você corre o risco do seu código virar uma gambiarra.

Na camada view do sistema, temos a manter que faz a parte do controle das ações que se assemelha muito as Servlets e ActionController do Java.

A idéia é receber as requisições do cliente, direcioná-las aos objetos de negócio, onde os dados são processados e retornados ao cliente.

Patterns: Intercepting Filter; Front Controller; View Helper; Composite View; Service To Worker; Dispatcher View.

Podemos, quem sabe mais para frente, dar exemplos reais de algumas patterns.

Pessoal, espero ter contribuído com alguma coisa para vocês.

Um abraço e até mais.


Comente também

19 Comentários

Rafael Capucho
Rafael Capucho

seria legal da sua parte, disponibilizar todo o projeto final em um zip único para os leitores, isso seria de grande. ou se preferir envie no meu e-mail: rafael.capucho@gmail.com Abraços

Rogério Rodrigues
Rogério Rodrigues

OK. QUEM DESEJAR RECEBER O PROJETO POR EMAIL FAVOR ME INFORMAR - rogerio@ifsolucoes.com

Diógenes Betat Roos
Diógenes Betat Roos

Gostaria de receber o arquivo completo da matéria por e-mail tbm...

diogenesdirkx@gmail.com

Keyne Viana Silva
Keyne Viana Silva

Olá parabéns pelo artigo, estava precisando mesmo começar a usar patterns.

Adaptei esse exemplo para um cadastro de usuários, com nome, email, login e senha. Parecido com o cadsatro de clientes.

Gostaria de saber qual é a melhor forma para aplicar uma tela de login e senha script de autenticação.

fico no aguardo

Rogério Rodrigues
Rogério Rodrigues

BOM, EU COSTUMO FAZER A TELA DE LOGIN DA SEGUINTE FORMA, SUBMETO OS DADOS PARA A "MANTER", TENHO A ENTIDADE USUARIO, E SE O USUARIO FOR VALIDO EU JOGO ESTA ENTIDADE EM UMA SESSAO. EU TRATO ESTE OBJETO NAS VALIDACOES DE AUTENTICAÇÃO DE USUARIO

Keyne Viana Silva
Keyne Viana Silva

Mas como seria a entidade de validação? seria uma entidade? Tipo um objeto "Segurança" ?

Keyne Viana Silva
Keyne Viana Silva

em relação ao login eu tentei criar Autenticador.class.php, AutenticadorDAO.class.php e esses recebia o objeto usuario como parametro.
Mais as implementações no manter e no facace... embolo tudo e não deu muito certo hehehe, é possível você fazer um exemplo ? vlw

Davi Tavares
Davi Tavares

Caso eu tenha a classe ContatoDAO e tenha que criar a classe PessoaDAO (que é um Contato), existe alguma maneira de "reaproveitar" a funcionalidade de ContatoDAO?

Davi Tavares
Davi Tavares

Caso eu tenha a classe ContatoDAO e tenha que criar a classe PessoaDAO (que é um Contato), existe alguma maneira de "reaproveitar" a funcionalidade de ContatoDAO?

Davi Tavares
Davi Tavares

Caso eu tenha a classe ContatoDAO e tenha que criar a classe PessoaDAO (que é um Contato), existe alguma maneira de "reaproveitar" a funcionalidade de ContatoDAO?

Davi Tavares
Davi Tavares

Caso eu tenha a classe ContatoDAO e tenha que criar a classe PessoaDAO (que é um Contato), existe alguma maneira de "reaproveitar" a funcionalidade de ContatoDAO?

Rogério Rodrigues
Rogério Rodrigues

BOM, SE O CONTATO FOR DA PESSOA, A CLASSE PESSOA CONTERÁ A CLASSE CONTATO, MAS NAO EXISTE HERANÇA NESSE CASO

Rogério Rodrigues
Rogério Rodrigues

BOM, SE O CONTATO FOR DA PESSOA, A CLASSE PESSOA CONTERÁ A CLASSE CONTATO, MAS NAO EXISTE HERANÇA NESSE CASO

Rogério Rodrigues
Rogério Rodrigues

BOM, SE O CONTATO FOR DA PESSOA, A CLASSE PESSOA CONTERÁ A CLASSE CONTATO, MAS NAO EXISTE HERANÇA NESSE CASO

Walace Fagundes
Walace Fagundes

Muito bom o artigo cara, implantamos este mesmo processo onde trabalho e a produtividade aumenta mesmo. Além de que fica fácil para um novo profissional se encaixar nos projetos, visto que os conceitos são conhecidos.

Walace Fagundes
Walace Fagundes

Muito bom o artigo cara, implantamos este mesmo processo onde trabalho e a produtividade aumenta mesmo. Além de que fica fácil para um novo profissional se encaixar nos projetos, visto que os conceitos são conhecidos.

Walace Fagundes
Walace Fagundes

Muito bom o artigo cara, implantamos este mesmo processo onde trabalho e a produtividade aumenta mesmo. Além de que fica fácil para um novo profissional se encaixar nos projetos, visto que os conceitos são conhecidos.

Walace Fagundes
Walace Fagundes

Muito bom o artigo cara, implantamos este mesmo processo onde trabalho e a produtividade aumenta mesmo. Além de que fica fácil para um novo profissional se encaixar nos projetos, visto que os conceitos são conhecidos.

Luiz Cherpers
Luiz Cherpers

Otimá explicação.
Gostaria de receber o arquivo da matéria por e-mail: dochipis@yahoo.com.br

Qual a sua opinião?

Comentários considerados ofensivos serão moderados.

Parceiros

IBM
PagSeguro
Internet Innovation
Dialhost
HostNet
Tecla
KingHost
DotStore
Dinamize