Segue uma classe de conexão em PHP orientado a objetos, retirada do livro PHP Programando com Orientação a Objetos, de Pablo Dall’Oglio. Deve-se criar as pastas app.ado e app.config com os arquivos my_livro.ini e pg_livro.ini, listado abaixo.
TConnection.class.php
PHP:
-
/*
-
* classe TConnection
-
* gerencia conexões com bancos de dados,
-
* através de arquivos de configuração.
-
*/
-
final class TConnection
-
{
-
/*
-
* método __construct()
-
* Não existirão instâncias de TConnection
-
* por isto, estamos marcando-o como private
-
*/
-
-
private function __construct() {}
-
-
/*
-
* método open()
-
* recebe o nome do banco de dados,
-
* verifica se existe arquivo de configuração
-
* para ele, e instancia o objeto PDO correspondente
-
*/
-
{
-
// verifica se existe arquivo de configuração
-
// para este banco de dados
-
{
-
// lê o INI e retorna um array
-
}
-
else
-
{
-
// se não existir, lança um erro
-
throw new Exception("Arquivo '$name' não encontrado");
-
}
-
-
// lê as informações contidas no arquivo
-
$user = $db['user'];
-
$pass = $db['pass'];
-
$name = $db['name'];
-
$host = $db['host'];
-
$type = $db['type'];
-
-
// descobre qual o tipo (driver)
-
// de banco de dados a ser utilizado
-
switch ($type)
-
{
-
case 'pgsql':
-
$conn = new PDO("pgsql:dbname={$name};user={$user}; password={$pass};host=$host");
-
break;
-
case 'mysql':
-
$conn = new PDO("mysql:host={$host};port=3307;dbname={$name}", $user, $pass);
-
break;
-
case 'sqlite':
-
$conn = new PDO("sqlite:{$name}");
-
break;
-
case 'ibase':
-
$conn = new PDO("firebird:dbname={$name}", $user, $pass);
-
break;
-
case 'oci8':
-
$conn = new PDO("oci:dbname={$name}", $user, $pass);
-
break;
-
case 'mssql':
-
$conn = new PDO("mssql:host={$host},1433;dbname={$name}", $user, $pass);
-
break;
-
}
-
-
// define para que o PDO lance exceções na ocorrência de erros
-
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
-
-
// retorna o objeto instanciado.
-
return $conn;
-
}
-
}
O nome table é uma variável. Refere-se a livro, podendo ser qualquer nome.
my_livro.ini:
PHP:
-
host = localhost
-
name = livro
-
user = root
-
pass = pass
-
type = mysql
pg_livro.ini:
PHP:
-
host = localhost
-
name = livro
-
user = postgres
-
pass = pass
-
type = pgsql
Ainda não me habituei com a PDO
boa classe…
vou dar uma estudada sobre essa PDO =]
Muito interessante, mas até hoje nunca experimentei o PDO…
Eu fiz um post sobre uma classe de conexão que eu uso:
http://www.victorferraz.com.br/?p=160