4 passos para criar uma Classe de Conexão com PDO e MySQL em PHP!

Quando estamos aprendendo programação, independente de qual linguagem estudada, em algum momento será necessário conectar nosso programa com um Banco de Dados.

Neste tutorial você vai aprender passo-a-passo como criar uma Classe em PHP capaz de acessar o Banco de Dados MySQL utilizando a API PDO PHP Data Objects.

Primeiro Passo – Criação da Classe em PHP.

Utilizando seu editor de textos preferido como notepad++, subline, vi, ou outro qualquer, crie um novo arquivo chamado DBConnection.php.

DBConnection será a Classe responsável em armazenas as informações ou credenciais de acesso ao Banco de Dados e se uma conexão for bem sucedida, devolverá um objeto de conexão para acessar as tabelas do banco de dados em questão.

No arquivo criado, inclua o código abaixo:

<?php
/** 
 * @author @marcomaddo
 *   
 */

class DBConnection {

   
}
?>

Observe que estamos declarando uma Classe chamada DBConnection. É muito importante que o nome do arquivo criado seja o mesmo nome da Classe, ou seja.

Arquivo DBConnection.php, contém a Classe DBConnection.

Segundo Passo – Definindo os atributos para a Classe DBConnection

Para que possamos acessar um banco de dados, necessitamos de pelo menos 4 informações:

1º Endereço do Servidor de Banco de Dados;
2º Nome do Banco de Dados;
3º Nome do Usuário e
4º Senha de Acesso.

Agora vamos definir estes atributos na Classe DBConnection.

<?php
/** 
 * @author @marcomaddo
 *   
 */

class DBConnection {

    private $_dbHostname = "Endereço do Servidor de Banco de Dados";
    private $_dbName = "Nome do Banco de Dados";
    private $_dbUsername = "Nome do Usuário";
    private $_dbPassword = " Senha de Acesso";
    private $_con;
    
}
?>

Observe que além dos 4 atributos mínimos necessários, temos um adicional, chamado $_con, que terá a finalidade de salvar o objeto com uma conexão válida ao banco de dados.

Terceiro Passo – Criação do Construtor da Classe DBConnection.

Como estamos criando uma Classe, e para termos sucesso no controle e gerenciamento das solicitações de acesso ao banco de dados a partir da Classe DBConnection, devemos criar um construtor que seja capaz de informar o status da tentativa de conexão, com base nos atributos fornecidos.

<?php
/** 
 * @author @marcomaddo
 *   
 */

class DBConnection {

    private $_dbHostname = "localhost";
    private $_dbName = "nome_do_banco_de_dados";
    private $_dbUsername = "usuario_do_banco_de_dados";
    private $_dbPassword = "senha_do_usuario_do_banco_de_dados";
    private $_con;

    public function __construct() {
      
    	try {
        	 // Código a ser executado de sucesso
          	echo "Objeto criado com sucesso";
	    } catch(Exception $e) {
             // Código a ser executado em caso de falhas
			echo "Falha ao conectar: " . $e->getMessage();
		}

    }
   
}
?>

Declaramos o construtor na linha 15 e finalizamos a declaração na linha 25. Agora observe que temos um bloco de código try/catch dentro da declaração do construtor. A finalidade do try/catch será tentar uma conexão válida com o banco de dados, e em caso de falhas, informar qual foi o motivo do erro. O código entre as linhas 17 e 22 é um exemplo padrão, agora vamos ajustar para nosso cenário.

O que são TRY e CATCH?

Utilizamos o bloco de código try e catch quando desejamos controlar a execução de uma parte do script PHP e interceptar algum possível erro em tempo de execução, não previsto em nossa lógica.

O bloco try tentará executar as instruções desejadas e se algo ter errado, antes do script falhar, a causa do erro é capturada pelo catch e todos os detalhes do problema em questão podem ser monitorados, salvos em log, etc.

Nossa classe irá tentar efetuar uma conexão com o MySQL e em caso de falha, iremos apresentar uma mensagem de erro informando qual foi a causa da falha, que geralmente está relacionada com as credenciais de acesso inválidas ou faltas na rede.

Quarto Passo – Criando um objeto PDO para conectar ao MySQL

O código que implementa a conexão com o banco de dados está listado em detalhes dentro do bloco do TRY conforme o script abaixo.

Basicamente estamos atribuindo à propriedade $_con uma conexão PDO com base nas credencias de acesso $_dbHostname, $_dbName, $_dbUsername e $_dbPassword.

É muito comum uma tentativa de conexão falhar por causa de informações inválidas destas propriedades. Sempre verifique se os dados de acesso ao MySQL estão corretos, uma boa alternativa é validar os dados de acesso utilizando o PHPMyAdmin ou outro cliente MySQL de sua preferência.

<?php
/** 
 * @author @marcomaddo
 *   
 */

class DBConnection {

    private $_dbHostname = "localhost";
    private $_dbName = "nome_do_banco_de_dados";
    private $_dbUsername = "usuario_do_banco_de_dados";
    private $_dbPassword = "senha_do_usuario_do_banco_de_dados";
    private $_con;

    public function __construct() {
    	try {
        	$this->_con = new PDO("mysql:host=$this->_dbHostname;
            					         dbname=$this->_dbName",
                                                $this->_dbUsername,
                                                $this->_dbPassword);    
        	$this->_con->setAttribute(PDO::ATTR_ERRMODE,
                                      PDO::ERRMODE_EXCEPTION);
	    } catch(PDOException $e) {
			echo "Connection failed: " . $e->getMessage();
		}

    }
    // return Connection
    public function returnConnection() {
        return $this->_con;
    }
}
?>

Na linha 17 estamos criando a conexão e na linha 21 estamos setando detalhes para tratamento de erros.

Na linha 23 correspondente ao catch, observe que existe uma Classe da biblioteca PDO chamada PDOException que fornecerá todos os detalhes de uma possível falha. Para visualizar a falha em questão, caso exista, estamos printando com um echo conforme linha 24 a mensagem de erro.

No próximo tutorial iremos testar esta classe e simular algumas possibilidades de falhas.

Classe Completa

A Classe DBConnection completa deverá ficar assim mas lembre-se de trocar os dados de acesso.

<?php
/**
 *
 * @author @marcomaddo
 *
 *   
 */


class DBConnection {

    private $_dbHostname = "informe";
    private $_dbName = "informe";
    private $_dbUsername = "informe";
    private $_dbPassword = "informe";
    private $_con;

    public function __construct() {
    	try {
        	$this->_con = new PDO("mysql:host=$this->_dbHostname;dbname=$this->_dbName", $this->_dbUsername, $this->_dbPassword);    
        	$this->_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			echo "Conectado com sucesso.";
	    } catch(PDOException $e) {
			echo "<h1>Ops, algo deu errado: " . $e->getMessage()."</h1>";
			echo "<pre>";
			echo print_r($e);
		}

    }
    // return Connection
    public function returnConnection() {
        return $this->_con;
    }
}
?>

Acompanhe meu trabalho nas redes sociais.

Muito obrigado por ler este tutorial,

Professor Marco Maddo

@marcomaddo

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *