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:
  1. /*
  2. * classe TConnection
  3. *  gerencia conexões com bancos de dados,
  4. *  através de arquivos de configuração.
  5. */
  6. final class TConnection
  7. {
  8. /*
  9. * método __construct()
  10. *  Não existirão instâncias de TConnection
  11. *  por isto, estamos marcando-o como private
  12. */
  13.  
  14. private function __construct() {}
  15.  
  16. /*
  17. * método open()
  18. *  recebe o nome do banco de dados,
  19. *  verifica se existe arquivo de configuração
  20. *  para ele, e instancia o objeto PDO correspondente
  21. */
  22. public static function open($name)
  23. {
  24. // verifica se existe arquivo de configuração
  25. // para este banco de dados
  26. if (file_exists("app.config/{$name}.ini"))
  27. {
  28. // lê o INI e retorna um array
  29. $db = parse_ini_file("app.config/{$name}.ini");
  30. }
  31. else
  32. {
  33. // se não existir, lança um erro
  34. throw new Exception("Arquivo '$name' não encontrado");
  35. }
  36.  
  37. // lê as informações contidas no arquivo
  38. $user  = $db['user'];
  39. $pass  = $db['pass'];
  40. $name  = $db['name'];
  41. $host  = $db['host'];
  42. $type  = $db['type'];
  43.  
  44. // descobre qual o tipo (driver)
  45. // de banco de dados a ser utilizado
  46. switch ($type)
  47. {
  48. case 'pgsql':
  49. $conn = new PDO("pgsql:dbname={$name};user={$user}; password={$pass};host=$host");
  50. break;
  51. case 'mysql':
  52. $conn = new PDO("mysql:host={$host};port=3307;dbname={$name}", $user, $pass);
  53. break;
  54. case 'sqlite':
  55. $conn = new PDO("sqlite:{$name}");
  56. break;
  57. case 'ibase':
  58. $conn = new PDO("firebird:dbname={$name}", $user, $pass);
  59. break;
  60. case 'oci8':
  61. $conn = new PDO("oci:dbname={$name}", $user, $pass);
  62. break;
  63. case 'mssql':
  64. $conn = new PDO("mssql:host={$host},1433;dbname={$name}", $user, $pass);
  65. break;
  66. }
  67.  
  68. // define para que o PDO lance exceções na ocorrência de erros
  69. $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  70.  
  71. // retorna o objeto instanciado.
  72. return $conn;
  73. }
  74. }

O nome table é uma variável. Refere-se a livro, podendo ser qualquer nome.

my_livro.ini:

PHP:
  1. host   = localhost
  2. name   = livro
  3. user   = root
  4. pass   = pass
  5. type   = mysql

pg_livro.ini:

PHP:
  1. host   = localhost
  2. name   = livro
  3. user   = postgres
  4. pass   = pass
  5. type   = pgsql


2 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=""> <strike> <strong>