Meu objetivo é mostrar uma maneira mais dinâmica de criar uma classe para conexão de banco de dados.
Tentarei primeiramente ser direto com o código-fonte e em seguida explicarei como construí essa classe. Esta não poderá ser a melhor, mas mostrará a forma básica de construir uma classe de conexão de forma correta, é claro que existem outras dicas de outros sites ou blogs que fazem a mesma coisa, mas segue para quem tem interesse de aprender ou aperfeiçoar.
<?php
/**
* Classe estática com objetivo de criar conexão e executar os comandos SQL.
* Objetivo é estabelecer a conexão, executar as dml, dql e fechar conexão.
* @version 1.0.0
* @author Bruno de Lima Fagundes
*/
class ConexaoMysql {
private static $host = "localhost";
private static $user = "root";
private static $pass = "root";
private static $banco = "Banco";
/**
* Criar conexão junto ao banco MySQL.
* Objetivo e estabelecer a conexão e retornar o link.
* throws 1 - Erro na conexão
* throws 2 - Banco não existe
* @return conexao Conexão estabelecida
*/
public static function getConexao () {
// Conectando e recuperando o link
$conexao = @mysql_connect(self::$host,self::$user,self::$pass);
if (!$conexao) throw new Exception("(".mysql_errno().") Erro ao acessar ".self::$host,1);
if (!mysql_select_db(self::$banco,$conexao))
throw new Exception("(".mysql_errno($conexao).") Banco de dados não existe ".self::$banco,2);
return $conexao;
}
/**
* Método para executar a Linguagem de Manipulação de Dados
* throws 3 - Query não é DML
* throws 4 - Erro ao executar SQL
* @@version A
* @param conexao $conexao Conexão já estabelecida
* @param string $query Query já definida
*/
public static function dml ($conexao,$query) {
if (!self::ehDmlouDql($query) == "dml")
throw new Exception("Query não é Linguagem de Manipulação de Dados",3);
$resultado = mysql_query($query, $conexao);
if (mysql_error($conexao))
throw new Exception("(".mysql_errno($conexao).") ".$query,4);
}
/**
* Método para fechar conexão
* throws 7 - Falha em fechar conexão
* @param conexao $conexao Conexão já estabelecida
*/
public static function fecharConexao ($conexao) {
if (!mysql_close($conexao))
throw new Exception("(".mysql_errno($conexao).") Não foi possível fechar a conexão",7);
}
}
?>
Para aquele que não compreendeu muito bem, tentarei explicar passo a passo:
A ideia inicial é criar um objeto estático que retornará a conexão do banco ou caso contrário retornará uma exceção, o objetivo não é instanciar um objeto ou chamar uma função para conexão, pois sabemos que a conexão tem como objetivo de criar simplesmente uma conexão e retornar o link da conexão, portanto foi criado usando o método estático (que não precisa instanciar o objeto).
Como quem programa a partir do PHP 5, provavelmente já programa orientada a objeto, portanto deve saber que um método estático só acessa as variáveis da classe se a variável também é estática.
Obs.: Para acessar variável estática da classe, ao invés de usar $this, usa-se self.
O método getConexao simplesmente conecta ao banco de dados e retorna o link da conexão.
Para que possamos tratar caso o ocorra um erro e para que não pareça na tela aquela mensagem horrível para o usuário, foi criada uma exceção caso ocorra algum erro na tentativa de conexão.
Como toda conexão aberta deve ser fechada (para não sobrecarregar o banco), foi elaborado um método fecharConexao, neste caso deverá apenas informar no atributo a própria conexão já estabelecida. Como ocorre no método conexão, o mesmo há uma exceção para poder ser tratada caso ocorra algum erro ao fechar a conexão.
Peço desculpa por não detalhar mais esta dica, mas estarei editando assim que possível para deixar mais clara essa classe de conexão ao MySQL.
Para saber mais, acesse o site:
Nenhum comentário foi encontrado.