Sie sind auf Seite 1von 5

PDO em PHP Orientado a Objetos

Veja nesse artigo como usar o PDO em


PHP orientado a objetos para conectar
em um banco de dados.
Nesse artigo vou mostrar como usar o PDO para conectar em um banco de dados em
PHP orientado a objetos.
Nesse exemplo estou usando o banco de dados MySQL.
Vamos primeiramente criar um banco de dados chamado teste. Ver Listagem 1
Listagem 1: Cdigo para criar um banco de dados no MySQL query
1create database teste
Agora vamos criar a estrutura da classe de conexo. Para isso vamos criar um arquivo
chamado conexao.php e criar a nossa classe database que ser uma abstrata. Ver
Listagem 2.
Listagem 2: Estrutura da classe database
1<?php
2abstract class database{
3}
4?>
Vamos ento adicionar os mtodos padres para as classes abstratas que so o
__construct, __clone e __destruct. Ver Listagem 3.
Os mtodos __construct e __destruct.so padres do php e so responsveis por
construir e destruir a instancia da nossa classe.
O mtodo __clone evita que nossa classe seja clonada.
Listagem 3: Classe usuarios com os mtodos __construct, __clone e __destruct
1 <?php
2 abstract class database{
/*Mtodo construtor do banco de dados*/
3
private function __construct(){}
4
5
/*Evita que a classe seja clonada*/
6
private function __clone(){}
7
/*Mtodo que destroi a conexo com banco de dados e remove da
8

9 memria todas as variveis setadas*/


public function __destruct() {
10
foreach ($this as $key => $value) {
11
unset($this->$key);
12
}
}
13
}
14
15?>
16
Na listagem 3 o mtodo __destruct remove da memria todas as variveis que foram
setadas pela nossa classe.
Agora vamos criar os mtodos de conexo e fechar a conexo com o BD. Ver Listagem
4.
Listagem 4: Mtodos connect e disconnect
1 <?php
2 abstract class database{
/*Mtodo construtor do banco de dados*/
3
private function __construct(){}
4
5
/*Evita que a classe seja clonada*/
private function __clone(){}
6
7
/*Mtodo que destroi a conexo com banco de dados e remove da
8
memria todas as variveis setadas*/
9
public function __destruct() {
10
$this->disconnect();
11
foreach ($this as $key => $value) {
unset($this->$key);
12
}
13
}
14
15
private static $dbtype
= "mysql";
16
private static $host
= "localhost";
17
private static $port
= "3306";
private
static
$user
= "root";
18
private
static
$password
=
"123";
19
private static $db
= "teste";
20
21
/*Metodos que trazem o conteudo da variavel desejada
22
@return
$xxx = conteudo da variavel solicitada*/
private function getDBType() {return self::$dbtype;}
23
private function getHost()
{return self::$host;}
24
private function getPort()
{return self::$port;}
25
private function getUser()
{return self::$user;}
26
private function getPassword(){return self::$password;}
27
private function getDB()
{return self::$db;}
28
private function connect(){
29
try
30
{
31
$this->conexao = new PDO($this32>getDBType().":host=".$this->getHost().";port=".$this33>getPort().";dbname=".$this->getDB(), $this->getUser(), $this-

34>getPassword());
}
35
catch (PDOException $i)
36
{
37
//se houver exceo, exibe
die("Erro: <code>" . $i->getMessage() . "</code>");
38
}
39
40
return ($this->conexao);
41
}
42
43
private function disconnect(){
44
$this->conexao = null;
}
45
46}
47?>
48
49
50
51
Veja a definio das variveis privadas usadas para conexo na Listagem 4:

dbtype - define uma string que informa qual a plataforma de banco de dados que
estamos usando. Para o MySQL usamos a string mysql e para o SQL Server
usamos a string mssql. Veja nesse link
http://br.php.net/manual/en/pdo.drivers.php os drives de banco de dados
suportados pelo PDO
host - define o nome do host
port - define a porta do host
user - define o usurio de acesso ao banco de dados
password - define a senha de acesso ao banco de dados
db - define o nome do banco de dados

O mtodo connect tenta se conectar com o banco de dados usando as informaes


passadas pelas variveis privadas, caso no consiga retorna um erro.
O mtodo disconnect finaliza a conexo com o banco de dados. Perceba que esse
mtodo est sendo chamado pelo mtodo __destruct, ou seja, ele sempre ser executado
ao trmino da utilizao da classe database.
Por fim vamos criar os mtodos insert, select, update e delete para fazer o nosso CRUD.
Ver Listagem 5.
Listagem 5: Mtodos insert, select, update e delete
1 <?php
2 abstract class database{
/*Mtodo construtor do banco de dados*/
3
private function __construct(){}
4
5
/*Evita que a classe seja clonada*/
private function __clone(){}
6

7
/*Mtodo que destroi a conexo com banco de dados e remove da
8
memria
todas as variveis setadas*/
9
public function __destruct() {
10
$this->disconnect();
11
foreach ($this as $key => $value) {
unset($this->$key);
12
}
13
}
14
15
private static $dbtype
= "mysql";
16
private static $host
= "localhost";
17
private static $port
= "3306";
private static $user
= "root";
18
private static $password = "123";
19
private static $db
= "teste";
20
21
/*Metodos que trazem o conteudo da variavel desejada
22
@return
$xxx = conteudo da variavel solicitada*/
23
private function getDBType() {return self::$dbtype;}
private function getHost()
{return self::$host;}
24
private
function
getPort()
{return self::$port;}
25
private function getUser()
{return self::$user;}
26
private function getPassword(){return self::$password;}
27
private function getDB()
{return self::$db;}
28
29
private function connect(){
try
30
{
31
$this->conexao = new PDO($this32>getDBType().":host=".$this->getHost().";port=".$this33>getPort().";dbname=".$this->getDB(), $this->getUser(), $this34>getPassword());
}
35
catch (PDOException $i)
36
{
37
//se houver exceo, exibe
38
die("Erro: <code>" . $i->getMessage() . "</code>");
}
39
40
return ($this->conexao);
41
}
42
43
private function disconnect(){
44
$this->conexao = null;
45
}
46
/*Mtodo select que retorna um VO ou um array de objetos*/
47
public function selectDB($sql,$params=null,$class=null){
48
$query=$this->connect()->prepare($sql);
49
$query->execute($params);
50
51
if(isset($class)){
52
$rs = $query->fetchAll(PDO::FETCH_CLASS,$class) or
die(print_r($query->errorInfo(),
true));
53
}else{
54
$rs = $query->fetchAll(PDO::FETCH_OBJ) or
55die(print_r($query->errorInfo(), true));
56
}

self::__destruct();
57
return $rs;
58
}
59
60
/*Mtodo insert que insere valores no banco de dados e retorna o
61ltimo id inserido*/
public function insertDB($sql,$params=null){
62
$conexao=$this->connect();
63
$query=$conexao->prepare($sql);
64
$query->execute($params);
65
$rs = $conexao->lastInsertId() or die(print_r($query66>errorInfo(), true));
self::__destruct();
67
return $rs;
68
}
69
70
/*Mtodo update que altera valores do banco de dados e retorna o
71nmero de linhas afetadas*/
72
public function updateDB($sql,$params=null){
$query=$this->connect()->prepare($sql);
73
$query->execute($params);
74
$rs = $query->rowCount() or die(print_r($query->errorInfo(),
75true));
76
self::__destruct();
return $rs;
77
}
78
79
/*Mtodo delete que exclu valores do banco de dados retorna o
80
nmero de linhas afetadas*/
81
public function deleteDB($sql,$params=null){
82
$query=$this->connect()->prepare($sql);
$query->execute($params);
83
$rs = $query->rowCount() or die(print_r($query->errorInfo(),
84
true));
85
self::__destruct();
86
return $rs;
87
}
88}
89?>
90
91
92
93

Das könnte Ihnen auch gefallen