You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<?php |
|
|
|
|
|
namespace app\Core; |
|
|
|
|
|
use PDO; |
|
|
use PDOException; |
|
|
|
|
|
/** |
|
|
* Classe de Conexao com banco de dados. |
|
|
* |
|
|
* - Criar uma conexao de forma mais r<EFBFBD>pida. |
|
|
* - Gerar logs da conexao. |
|
|
* - Fazer consultas mais r<EFBFBD>pidas. |
|
|
* |
|
|
* @author Lucas Awade |
|
|
*/ |
|
|
class Connect |
|
|
{ |
|
|
|
|
|
/** @conexao */ |
|
|
private static $instance; |
|
|
|
|
|
const FILE_DB = __DIR__ . "/../../bd"; |
|
|
public static function setInstance($val) |
|
|
{ |
|
|
self::$instance = $val; |
|
|
} |
|
|
public static function getInstance() |
|
|
{ |
|
|
$cd = []; |
|
|
if (empty(self::$instance)) { |
|
|
$cd = self::filedb(); |
|
|
self::$instance = new PDO( |
|
|
"pgsql:host={$cd['host_db']};port={$cd['porta_db']};dbname={$cd['base_db']}", |
|
|
$cd['usuario'], |
|
|
$cd['senha'], |
|
|
[ |
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, |
|
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, |
|
|
PDO::ATTR_CASE => PDO::CASE_NATURAL |
|
|
] |
|
|
); |
|
|
} |
|
|
|
|
|
if (self::$instance) { |
|
|
return self::$instance; |
|
|
} |
|
|
return null; |
|
|
} |
|
|
|
|
|
/** |
|
|
* Pega as informacoes das credenciais no arquivos padrao "bd"; |
|
|
*/ |
|
|
private static function filedb() |
|
|
{ |
|
|
if (file_exists(self::FILE_DB)) { |
|
|
$credentials = array(); |
|
|
$contents = fopen(self::FILE_DB, 'r'); |
|
|
while (!feof($contents) && $contents) { |
|
|
$str = fgets($contents); |
|
|
$dados = explode('=', $str); |
|
|
$credentials[strtolower($dados[0])] = trim(str_replace('"', '', $dados[1])); |
|
|
} |
|
|
fclose($contents); |
|
|
$credentials = array_filter($credentials); |
|
|
return $credentials; |
|
|
} |
|
|
} |
|
|
} |