domingo, 19 de maio de 2013

Criando uma Classe de conexão com o Banco de Dados utilizando MySLQI

Hoje vou ensinar como criar uma classe de conexão com o banco de dados utilizando a classe MySQLI. Vamos criar um novo projeto no NetBeans chamado escola. Com o projeto criado, vamos agora criar uma classe chamada conexao (só para lembrar não colocamos acento, espaços e nenhum caractere especial no nome de nossa classe), essa classe vai herdar atributos e métodos da classe MySQLI.

<?php
class conexao extends mysqli {

}
?>

Esta classe possui os seguintes atributos: servidor, usuário, senha e banco. Esses atributos são obrigatórios para realizar uma conexão como o SGBD MiSQL. Nossa classe ficará assim:

<?php
class conexao extends mysqli {
    //atributos
    public $servidor;
    public $usuario;
    public $senha;
    public $banco;
}
?>

Como Classe conexao possui os atributos com visibilidade public, não precisamos criar os métodos get e set, isso significa que podemos atribuir valores diretamente em nossos atributos, então vamos criar o método construtor, logo abaixo dos nossos atributos.

<?php
class conexao extends mysqli {
    //atributos
    public $servidor;
    public $usuario;
    public $senha;
    public $banco;

    //métodos
    function __construct($servidor, $usuario, $senha, $banco) {
        $this->servidor = $servidor;
        $this->usuario = $usuario;
        $this->senha = $senha;
        $this->banco = $banco;
    }
}
?>

Mas nosso método construtor apenas irá atribuir os valores quando instanciarmos o objeto conexao, isso não estabelece a conexão com o SGBD. Para estabelecer a conexão, devemos criar um método conectar. O método conectar utiliza o construtor da classe pai, ou seja, o método construtor da classe MySQLI. Para chamar o método construtor da classe MySQLI utilizamos o comando parent.

<?php
class conexao extends mysqli {
    //atributos
    public $servidor;
    public $usuario;
    public $senha;
    public $banco;

    //métodos
    function __construct($servidor, $usuario, $senha, $banco) {
        $this->servidor = $servidor;
        $this->usuario = $usuario;
        $this->senha = $senha;
        $this->banco = $banco;
    }

    public function conectar()
    {
        parent::__construct($this->servidor, $this->usuario, $this->senha, $this->banco);
    }
}
?>

Nosso método conectar já possibilita a conexão com o SGBD, mas caso aconteça algum erro? As boas práticas de programação exigem que os erros de tratados na aplicação, isso chama-se tratamento de Exceções. Somente para lembrar, já expliquei tratamentos de exceções na postagem Introdução a Orientação a Objetos no PHP - parte 3 .

<?php
class conexao extends mysqli {
    //atributos
    public $servidor;
    public $usuario;
    public $senha;
    public $banco;

    //métodos
    function __construct($servidor, $usuario, $senha, $banco) {
        $this->servidor = $servidor;
        $this->usuario = $usuario;
        $this->senha = $senha;
        $this->banco = $banco;
    }

    public function conectar()
    {
        try
        {
            parent::__construct($this->servidor, $this->usuario, $this->senha, $this->banco);
            if(mysqli_connect_errno() != 0)
            {
                throw new Exception('Erro ao conectar!');
            }
        }
        catch(Exception $e)
        {
            echo $e->getMessage();
        }
    }
}
?>
Agora vamos testar nossa classe conexao, para isso, vamos instanciar um objeto conexao no mesmo arquivo PHP, depois do fechamento da última chave da classe conexao. Após instanciarmos essa classe, o nosso exemplo estará completo. Observação: na linha 36 colocamos o @ na frente da chamado do método conectar para não exibir as mensagens de alerta do MySQL.

<?php
class conexao extends mysqli {
    //atributos
    public $servidor;
    public $usuario;
    public $senha;
    public $banco;

    //métodos
    function __construct($servidor, $usuario, $senha, $banco) {
        $this->servidor = $servidor;
        $this->usuario = $usuario;
        $this->senha = $senha;
        $this->banco = $banco;
    }

    public function conectar()
    {
        try
        {
            parent::__construct($this->servidor, $this->usuario, $this->senha, $this->banco);
            if(mysqli_connect_errno() != 0)
            {
                throw new Exception('Erro ao conectar!');
            }
        }
        catch(Exception $e)
        {
            echo $e->getMessage();
        }
    }
}

    //testar a conexão
    $con = new conexao('127.0.0.1', 'root', '', 'bdEscol');
    @$con->conectar();
?>
Disponibilizo o vídeo referente a esta aula. Qualquer dúvida ou comentário é só postar. Bom estudo!


Nenhum comentário:

Postar um comentário

Comentemm, vamos compartilhar experiências!