Advertisement
willamepcosta

conexao.php

Sep 22nd, 2020
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.98 KB | None | 0 0
  1. <?php
  2. /*
  3.  * Constantes de parâmetros para configuração da conexão
  4.  */
  5. define('SGBD', 'mysql');
  6. define('HOST', 'localhost');
  7. define('DBNAME', 'projeto_gestao');
  8. define('CHARSET', 'utf8');
  9. define('USER', 'root');
  10. define('PASSWORD', '');
  11. define('SERVER', 'localhost');
  12.  
  13. class conexao {
  14.    
  15.     /*
  16.      * Atributo estático de conexão
  17.      */
  18.     private static $pdo;
  19.  
  20.     /*
  21.      * Escondendo o construtor da classe
  22.      */
  23.     private function __construct() {
  24.         //
  25.     }
  26.  
  27.     /*
  28.      * Método privado para verificar se a extensão PDO do banco de dados escolhido
  29.      * está habilitada
  30.      */
  31.     private static function verificaExtensao() {
  32.  
  33.         switch(SGBD):
  34.             case 'mysql':
  35.                 $extensao = 'pdo_mysql';
  36.                 break;
  37.             case 'mssql':{
  38.                 if(SERVER == 'localhost'):
  39.                     $extensao = 'pdo_dblib';
  40.                 else:
  41.                     $extensao = 'pdo_sqlsrv';
  42.                 endif;
  43.                 break;
  44.             }
  45.             case 'postgre':
  46.                 $extensao = 'pdo_pgsql';
  47.                 break;
  48.         endswitch;
  49.  
  50.         if(!extension_loaded($extensao)):
  51.             echo "<h1>Extensão {$extensao} não habilitada!</h1>";
  52.             exit();
  53.         endif;
  54.     }
  55.  
  56.     /*
  57.      * Método estático para retornar uma conexão válida
  58.      * Verifica se já existe uma instância da conexão, caso não, configura uma nova conexão
  59.      */
  60.     public static function getInstance() {
  61.  
  62.         self::verificaExtensao();
  63.  
  64.         if (!isset(self::$pdo)) {
  65.             try {
  66.                 $opcoes = array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8');
  67.                 switch (SGBD) :
  68.                     case 'mysql':
  69.                         self::$pdo = new \PDO("mysql:host=" . HOST . "; dbname=" . DBNAME . ";", USER, PASSWORD, $opcoes);
  70.                         break;
  71.                     case 'mssql':{
  72.                         if(SERVER == 'linux'):
  73.                             self::$pdo = new \PDO("dblib:host=" . HOST . "; database=" . DBNAME . ";", USER, PASSWORD, $opcoes);
  74.                         else:
  75.                             self::$pdo = new \PDO("sqlsrv:server=" . HOST . "; database=" . DBNAME . ";", USER, PASSWORD, $opcoes);
  76.                         endif;
  77.                         break;
  78.                     }
  79.                     case 'postgre':
  80.                         self::$pdo = new \PDO("pgsql:host=" . HOST . "; dbname=" . DBNAME . ";", USER, PASSWORD, $opcoes);
  81.                         break;
  82.                 endswitch;
  83.                 self::$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
  84.             } catch (PDOException $e) {
  85.                 print "Erro: " . $e->getMessage();
  86.             }
  87.         }
  88.         return self::$pdo;
  89.     }
  90.  
  91.     public static function isConectado(){
  92.        
  93.         if(self::$pdo):
  94.             return true;
  95.         else:
  96.             return false;
  97.         endif;
  98.     }
  99.  
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement