Escolar Documentos
Profissional Documentos
Cultura Documentos
Desenvolvendo Aplicacoes em Camadas Com PHP 5
Desenvolvendo Aplicacoes em Camadas Com PHP 5
Classes Bsicas:
Composta por classes simples do sistema, apenas com mtodos de acesso aos seus
atributos.
Coleo de Dados:
Esta camada responsvel por manipular diversos objetos das classes bsicas.
Normalmente possui alguma estrutura de armazenamento de objetos das classes
(Ex: Array de Objetos).
Conhecida tambm com Camada de Persistncia.
Coleo de Negcios:
Esta camada responsvel por realizar crticas de Negcio especficas a uma determinada classe
bsica da aplicao utilizando-se de uma Coleo de Dados, para lhe dar suporte a persistncia
de objetos da aplicao.
Ex: O usurio no pode ter a idade maior que a idade mxima de adeso ao plano (Regra de
plano de sade), ou No possvel inserir duas contas com o mesmo nmero (Regra do
Banco).
Disponibiliza servios especficos do Negcio envolvido
Ex: Funes especficas para aquela classe bsica usada pela classe de Negcio.
Geralmente chamada de cadastro.
Classes Bsicas
Classes mais simples do sistema.
Vamos comear pela classe que trata do comportamento de um tipo de ator, algum que interage com o
sistema, nesse exemplo vamos criar a classe Pessoa.
Voc deve estar se perguntando porque uma classe s com assinatura de mtodos?
Antes de responder esta pergunta vou citar um conceito usado no PHP5, que ser de extrema importncia
para se trabalhar com camadas, ele chamado de Induo de Tipos.
Com este recurso voc pode forar seu mtodo a receber um determinado tipo de dado.
Ex:
public function inserir(Pessoa $objPessoa)
{
$this->inserir($objPessoa);
}
Para deixar flexvel e no amarrar o sistema, podemos usar uma Interface que implementada por varias
classes, mas que apenas uma ser usada.
Vamos dar um exemplo:
Agora vamos criar uma classe que implementa a Interface RepositorioPessoa, digamos que eu resolvi
salvar os registros em um banco de dados.
Ento podemos criar uma classe que usa nossa interface RepositorioPessoa da seguinte maneira:
= new CadastroPessoa($this->RepositorioPessoa)
Fachada
A idia da Fachada fornecer uma instncia nica para o sistema, de forma que o usurio s ter acesso
aos seus comportamentos superficiais, o prprio nome j diz, FACHADA, ento o que devemos
fazer para definir uma fachada ?
Primeiramente vamos usar um padro de projetos Design Pattern, esses padres so de formas de
implementaes para definir um comportamento padro, facilitando assim a nossa vida como
desenvolvedores, aumentando a manutenibilidade dos sistemas.
Ento a idia a seguinte: definir um atributo do tipo da classe como static private, deixar o construtor
como private para garantir que no ser possvel acessar o mesmo, criar um mtodo static que retorna
uma Fachada, e perguntar se j foi instanciada.
Nesta classe quando levantada uma exceo ela recebe o cdigo do erro e faz uma
busca no banco de dados onde os erros esto em portugus, se o erro no estiver
cadastrado ela exibe o erro do em Ingls do MYSQL.
Apresentao
Esta a ltima camada que devemos nos importar, ser a forma que o usurio
visualizar seu sistema, e quando seu sistema est dividido desta forma voc poder
mudar o layout do seu sistema ou site sem muito esforo para a manuteno.
A seguir ser mostrado um diagrama de classes relacionando essas camadas e
envolvendo exemplos de cdigo citados nos exemplos anteriores.
$id;
$nome;
$idade;
$sexo;
$cpf;
=
=
=
=
"localhost";
"root";
"";
"pessoa";
//
//
//
$fachada->inserir($objPessoa);
$fachada->atualizar($objPessoa);
$fachada->deletar(1);
$objPessoa = $fachada->pesquisar(1);
Espero ter contribudo para o conhecimento comum entre os que fazem a comunidade PHP.