Classe de conexão em PHP orientado a objetos


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
*/
public static function open($name)
{
// verifica se existe arquivo de configuração
// para este banco de dados
if (file_exists(“app.config/{$name}.ini”))
{
// lê o INI e retorna um array
$db = parse_ini_file(“app.config/{$name}.ini”);
}
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;
}
}
[/php]

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
[/php]

pg_livro.ini:
[php]
host = localhost
name = livro
user = postgres
pass = pass
type = pgsql
[/php]

Tema Portal WordPress - PortalPress


3 Responses to “Classe de conexão em PHP orientado a objetos”

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>