POO (Programação Orientada a Objetos) com Conexão ao Banco de Dados
A Programação Orientada a Objetos (POO) é um paradigma de programação que organiza o código em objetos. Um objeto é uma representação de uma entidade do mundo real, que possui atributos (características) e métodos (comportamentos).
Exemplo de Classe
Vamos criar uma classe Animal.
class Animal {
public $nome;
public $cor;
public function __construct($nome, $cor) {
$this->nome = $nome;
$this->cor = $cor;
}
public function emitirSom() {
return "Som de animal!";
}
}
Herança
Herança é um dos pilares da POO. Permite que uma classe (classe filha) herde atributos e métodos de outra (classe pai). Isso promove a reutilização de código e a organização.
Vamos criar uma classe Cachorro que herda de Animal.
class Cachorro extends Animal {
public function emitirSom() {
// Sobreescreve o método da classe pai
return "Au au!";
}
}
// Criando um objeto
$cachorro = new Cachorro("Rex", "Marrom");
echo $cachorro->emitirSom(); // Saída: Au au!
O PDO (PHP Data Objects) é uma extensão do PHP que fornece uma interface leve e consistente para acessar bancos de dados. É a forma recomendada e mais segura de fazer a conexão.
Criando a Classe de Conexão
Para manter o código organizado e reutilizável, vamos criar uma classe Database para gerenciar a conexão.
class Database {
private static $pdo;
public static function conectar() {
if (!self::$pdo) {
$host = 'localhost';
$db = 'nome_do_banco';
$user = 'usuario';
$pass = 'senha';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
self::$pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
}
return self::$pdo;
}
}
Unindo Herança e PDO: Classe Modelo
Agora, vamos criar uma classe Modelo que será a base para todas as nossas classes que interagem com o banco de dados. Ela vai herdar de Database e vai conter métodos genéricos.
class Modelo extends Database {
protected static $tabela;
public static function all() {
$pdo = self::conectar();
$stmt = $pdo->query("SELECT * FROM " . static::$tabela);
return $stmt->fetchAll();
}
}
Criando uma Classe Usuario
Finalmente, vamos criar uma classe Usuario que herda de Modelo. Isso permite que ela use os métodos de Modelo para interagir com a tabela usuarios sem a necessidade de reescrever o código de conexão e consulta.
class Usuario extends Modelo {
protected static $tabela = 'usuarios';
public $nome;
public $email;
public function __construct($nome, $email) {
$this->nome = $nome;
$this->email = $email;
}
}
// Usando a classe
$usuarios = Usuario::all();
print_r($usuarios);
Este modelo demonstra como a herança e o PDO, juntos, criam uma estrutura de código poderosa, organizada e segura para a interação com o banco de dados. Cada classe de modelo (como Usuario) apenas precisa definir qual tabela ela representa e já pode usar os métodos de sua classe pai (Modelo) para fazer consultas, criando um código mais limpo e fácil de manter.