Segue o cdigo:
include_once 'dados.cfg.php';
1class DAO {
2
3
protected $con = null;
4
protected $host = HOST_BD;
5
protected $dbname = NAME_BD;
6
protected $user = USER_BD;
7
protected $password = PASSWORD_BD;
8
9
10
public function openConnection() {
11
12
try {
13
14
$this->con = new PDO(
15
'mysql:host='.$this->host.';dbname='.$this16
>dbname.';charset=utf-8',
17
$this->user,
18
$this->password
19
);
20
21
$this->con->exec("SET NAMES utf8");
22
23
if(!$this->con) throw new Exception("No foi possvel
24
25contectar-se base de dados.");
26
return $this->con;
27
28
} catch(PDOException $e ) {
29
30
//tratar p/ arquivo de log
31
echo $e->getLine() ." ". $e->getMessage();
32
exit();
33
34
}
35
36
}
37
38
protected function closeConnection() {
39
if($this->con != null) $this->con = null;
40
}
41
42
public function __destruct() {
43
$this->closeConnection();
44
}
}
Se voc criou suas classes do domnio seguindo o padro de projeto "Mapeando Objetos como
Tabelas", para cada objeto do domnio existente, voc dever criar uma classe de implementao do
DAO que estender a classe acima a fim de se conectar ao banco de dados de sua aplicao.
Outros mtodos de consulta, insero, atualizao e excluso de registros do banco de dados devem
ser criados diretamente na classe de implementao do DAO para o referido objeto do domnio, por
exemplo, ClienteDAO. Para facilitar, crie uma interface com os mtodos mais utilizados, que poder
ficar exatamente assim:
?
1interface IDAO {
public function
2
public function
3
public function
4
5
public function
6
public function
7}
findByPK($pk);
listAll();
insert($object);
update($object);
delete($pk);
A interface acima poder ser implementada pela classe de implementao do DAO para um
determinado objeto do domnio como a seguir:
?
1include_once '../domain/Cliente.class.php';
2include_once 'DAO.class.php';
3include_once 'IDAO.class.php';
4
5class ClienteDAO extends DAO implements IDAO {
6
public function findByPK($pk) {
7
8 //cdigo
9 }
10
public function listAll() {
11
12 //cdigo
13 }
14
public function insert($object) {
15
16 //cdigo
17 }
18
public function update($object) {
19 //cdigo
20 }
21
public function delete($pk) {
22 //cdigo
23 }
24}
No esquea de incluir os arquivos nas primeiras linhas dessa classe e implemente os mtodos
restantes. Essa forma de programar, pode ser utilizada para outras classes do domnio e outros
mtodos podem ser inseridos para consulta ao banco de dados, afinal podemos consultar um cliente
por vrias formas, no mesmo?
Para quem ficou em dvida, na classe DAO, utilizei um "SET NAMES utf8" aps abrir a conexo com o
BD. Caso voc no utilize MySQL, voc poder retirar essa linha (ou modificar o projeto para
especificar em caso de MYSQL, utilizar essa linha) que serve para retornar os caracteres especiais em
utf8, sem caracteres estranhos no cdigo.
O arquivo dados.cfg.php onde ficar as informaes do seu banco de dados, como endereo, nome
de usurio, nome do banco de dados e a senha. Mantenha esse arquivo protegido no diretrio de sua
apliacao e evite o acesso direto a ele. Se voc preferir, utilize um nome diferente, assim voc tornar
sua aplicao mais segura.
Ao fazer um include desse arquivo na classe DAO, retornamos os valores de HOST_DB, NAME_DB,
USER_DB e PASSWORD_DB, que sero utilizados para se conectar ao banco de dados especfico.
Voc poder ter vrios arquivos de configurao, para acessar mais de um banco de dados. Porm,
falaremos sobre isso em um outro momento.
Terminando nossa "aplicao", o UML dessas classes ficaro assim:
Faa o mesmo para Produto (ProdutoDAO), Fornecedor (FornecedorDAO) e todas as classes do seu
domnio.
Antigamente, os programadores faziam tudo para economizar memria em disco, pois era
escassa. Apesar de termos abundncia dessa memria hoje em dia, procure sempre trabalhar assim,
evitando reescrever algo que j est pronto em seu prprio cdigo. At um IF-THEN-ELSE pode ser
otimizado.
Cadastre seu e-mail para receber os posts do site e no esquea de curtir nossa pgina no Facebook!
Obrigado mais uma vez pela leitura. Um abrao a todos e at o prximo post!
Mucho más que documentos.
Descubra todo lo que Scribd tiene para ofrecer, incluyendo libros y audiolibros de importantes editoriales.
Cancele en cualquier momento.