Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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();$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.
Carregando comentários...