Conexão ao MySQL usando classe PHP estática

Publicado por bruno em 16/10/2009

[ Hits: 11.550 ]

Blog: http://sites.google.com/site/brnlinophp/

 


Conexão ao MySQL usando classe PHP estática



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:
Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Removendo o network-manager e configurando a rede manualmente

Instalador automatizado do mensageiro instantâneo Emesene

Utilizando chaves públicas no SSH e SCP

Insigne Linux 2.0

Vocês conhecem o BrasilTTS? A voz do Linux em Português - Finalmente o seu Linux falando com você!

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts