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.
 
 
 

69 lines
1.7 KiB

<?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;
}
}
}