Iremos, nesse artigo, entender como funciona um Sistema divido em Camadas e construir uma classe de manipulação de Banco de Dados.
Pré-Requisitos
Saber conceitos de Orientação a Objeto, e XML.
Introdução
O PHP vem crescendo muito e está sendo usado hoje em dia em desenvolvimento de software e vou falar e mostrar exemplos práticos ao longo do tempo sobre esse tipo de aplicação com o php. Geralmente, quando construímos aplicações pequenas ou de fácil interação, nós, “falando de programação”, colocamos a “lógica do negócio” nas mesmas páginas e não nos preocupamos muito com a divisão da lógica de programação em partes.
Mas para aplicações de médio e grande porte (E-Commerce, Portais, etc) se fizermos isso, iremos com certeza cair em uma bagunça que não teremos mais volta, já vi muito dessas coisas aconterem com pessoas conhecidas, é por isso que eu vou conceituar e construir uma “Arquitetura de Desenvolvimento” para nosso sistema ganhar mais performance e abrangência. Também conhecida como arquitetura das três camadas (Banco de Dados, Regras de Negócio e Interface com o Usuário).
Vamos entender mais com a figura abaixo:

Entendendo
Interface com o Usuário - Entrada e saída de dados. A única visão do sistema pelo usuário.
Regras de Negócio -
São Classes que validam do dados vindo da Interface com Usuário, retornam mensagens de erro quando houverem. Também responsável por levar e trazer informações do Banco de Dados.
Banco de Dados -
Camada responsável pela comunicação e manutenção de dados e informações.
Agora, como construir esse tipo de aplicação? Bom, iremos precisar de uma Pattern, o que seria isso? Uma organização das camadas. Veja a figura abaixo e compreenda.

A pasta mãe eu chamo de fábrica porque nós estamos propondo uma fábrica de software (pelos menos a pattern), neste artigo não irei falar sobre levantamento e requisitos.
A pasta Arquitetura irá conter as classes utilitárias do sistema, ex: Banco de Dados, E-mail, Manipulação de Arquivos, etc.
A pasta Negócio conterá as classes que compôem a lógica dos nossos sistemas. Já a pasta Sistema conterá as páginas que farão a troca de dados com o usuário.
Agora, sabendo disso, iremos construir uma pequena aplicação com esse conceitos.
A Arquitetura
Na pasta Arquitetura ficam as classes utilitárias dos aplicativos a serem criados, veremos agora a classe que manipula o banco de dados (usarei o MySQL, mas nada impede de usar outro banco).
class BancodeDados {
private $host;
private $username;
private $password;
private $connection;
private $squema;
public function BancodeDados($resource) {
$xml = simplexml_load_file($resource);
$this->host = $xml->sessionfactory->host;
$this->username = $xml->sessionfactory->username;
$this->password = $xml->sessionfactory->password;
$this->squema = $xml->sessionfactory->database;
}
public function conecta() {
$this->connection = mysql_connect($this->host, $this->username,$this->password);
mysql_select_db($this->squema,$this->connection);
return $this->connection;
}
public function desconecta() {
mysql_close($this->connection);
}
public function updateSQL($sql) {
$r = mysql_query($sql,$this->connection);
if($r == 0) {
return false;
} else {
return true;
}
}
public function executaSQL($sql) {
$retorno = mysql_query($sql,$this->connection);
return $retorno;
}
public function iniciarTransacao() {
$this->executaSQL("begin");
}
public function efetivarTransacao() {
$this->executaSQL("commit");
}
public function desfazerTransacao() {
$this->executaSQL("rollback");
}
}
Entendendo o código
A
classe receberá os atributos host, username, password
e squema para fazer a conexão.
Estes atributos vindos de um arquivo xml. Sendo que o caminho
desse arquivo é passado como parâmetro no método
construtor.
--version 1.0--
--configuration--
--sessionfactory--
--host--localhost--/host--
--username--root--/username--
--password--abc--/password--
--database--exclusiva--/database--
--/sessionfactory--
--/configuration--
No método construtor os atributos são inicializados com os dados vindos do XML. O método updateSQL() executa a query e retorna true ou false. O método executaSQL() executa a query e retorna os registros. Os métodos iniciarTransacao(), efetivarTransacao() e desfazerTransacao() são para transação de banco de dados.
Com isso, nós já temos uma parte das camadas prontas, uma parte da camada Banco de Dados com a classe manipuladora. Separamos o código que geralmente é posto onde você recebe os dados e já conecta e executa tudo. Agora, nós temos um objeto que irá fazer isso, acontecendo também o re-uso de código porque toda aplicação que necessitar interagir com o banco de dados irá usar o objeto BancodeDados.
No próximo artigo mostrarei um pouco mais sobre a camada Banco de Dados e sobre o Data Access Object(DAO).
Abraço!













21 Comentários
Qual a sua opinião?