Conexao ao Banco de Dados.
Olá, pessoal tudo joia.
Nesta classe tentei me focar no objetivo que é apenas conectar ao banco de dados e caso falhe retorne um erro, mas um erro tratado onde o usuário final não veria os avisos gerados pelo mysql.
lib.class.php ( library que contém as variaveis constantes do sistema);
ConexaoBanco ( Class que possui um metodo para CriarConexao, FecharConexao e ErroMysql);
//lib.class.php
<?php
define(SERVIDOR,'servidor');
define(USUARIO,'usuario');
define(SENHA,'senha');
define(DB_NOME,'banco_de_dados');
//erro_lib_mysql.php
....
$this->erroMySQL[2000] = "Erro desconhecido no MySQL!";
$this->erroMySQL[2003] = "Não é possível conectar ao servidor Host!";
$this->erroMySQL[2005] = "Servidor Host MySQL desconhecido!";
...
//lista os principais erros de acordo com o código gerado.
//ConexaoBanco.class.php
<?php
class ConexaBanco {
public $erroMySQL = array();
public $conexao;
public $variaveis_conexao = array();
public $include_arquivo;
function __construct(){
require_once ('erro_lib_mysql.php');
}
public function CriaConexao ($variaveis_conexao = NULL){
$this->include_arquivo = ($variaveis_conexao == NULL) ? require_once('lib.class.php') : $c = explode(',',$variaveis_conexao);
$this->servidor = ($variaveis_conexao == NULL) ? SERVIDOR : $c['0'];
$this->usuario = ($variaveis_conexao == NULL) ? USUARIO : $c['1'];
$this->senha = ($variaveis_conexao == NULL) ? SENHA : $c['2'];
$this->db_nome = ($variaveis_conexao == NULL) ? DB_NOME : $c['3'];
@$this->conexao = new mysqli($this->servidor,$this->usuario,$this->senha,$this->db_nome);
if(mysqli_connect_errno()){
echo($this->ErroMysql());
}else{
return $this->conexao;
}
}
public function FechaConexao(){
return (@mysqli_close($this->conexao));
}
public function LinkConexao(){
if($this->conexao){
return ($this->conexao);
}else{
return ($this->ErroMysql());
}
}
public function ErroMysql(){
date_default_timezone_set("America/Sao_Paulo");
$this->erroCodigo_MySQL = mysqli_connect_errno();
if(array_key_exists($this->erroCodigo_MySQL, $this->erroMySQL)){
$erro = "( ".date("d/m/Y H:i:s", time())." ) - [ ".mysqli_connect_errno()." ] ".$this->erroMySQL[$this->erroCodigo_MySQL].' na linha '. __LINE__ . ' no arquivo '.__FILE__."\n\n";
error_log($erro,3,"erros.log");
}else{
$erro = "( ".date("d/m/Y H:i:s", time())." ) - [ ".mysqli_connect_errno()." ] " .$this->erroMySQL[$this->erroCodigo_MySQL].' na linha '. __LINE__ . ' no arquivo '.__FILE__."\n\n";
error_log($erro,3,"erros.log");
}
return $this->erroMySQL[$this->erroCodigo_MySQL];
}
}
$t = new ConexaBanco;
$t->CriaConexao();
$t->FechaConexao();Bom, esta class como fosses percebem verifica se há uma requisição ao um novo servidor com a variavel '$variaveis_de_conexao', caso queira realizar uma nova conexao, que não seja a padrão estabelecida na 'lib.class.php' bata instanciar na seguinte maneira.
$t->CriaConexao('servidor,usuario,senha,banco_de_dados');
//a class é responsavel por desmontar o array e estabelecer a conexao.E e o metodo ErroMysql(); é responsavel por gerar os logs de erros salvando no arquivo 'erros.log'.
Bom suprimir avisos de erros e fiz este tratamento de erros, li que estes não são vias atimizadas para se trabalhar, se não quais são as mais otimizadas?
Bom oque vocês acham desta class?
Melhorou?
Grato, Jefferson.
Discussão (19)
Carregando comentários...