[Resolvido] Classe de extensão PDO e funções MySQL
Olá pessoal,
Há algum tempo estou estudando POO, estou iniciando a criação de pequenas classes para fixação do que já estudei.
Inclusive vários arquivos / script aqui do fórum me ajudaram bastante. Abaixo estão algumas classes (extensão PDO), se puderem dar-me opiniões para melhorá-las, ficarei grato.
Classe de conexão (Basicamente é o meu arquivo conexao.php atualmente)
class.mysql.php
class Conexao extends PDO {
private $cnx = NULL;
private $host = '';
private $database = '';
private $usuario = '';
private $senha = '';
public function __construct() {
try {
//Cria a conexão ao MySQL
if($this->cnx == null) {
$cnx = parent::__construct('mysql:host=' . $this->host . ';port=330;dbname=' . $this->database, $this->usuario, $this->senha, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$cnx = parent::setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$cnx = parent::setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
$this->cnx = $cnx;
return $this->cnx;
}
}
catch(PDOException $e) {
echo 'Falha ao realizar conexão à base de dados.<br /><br />
Erro técnico: ' . $e->getMessage() . '<br />
Arquivo: ' . basename($e->getFile()) . '<br />
Linha: ' . $e->getLine() . '<br />';
}
}
//Função de encerramento da conexão
public function fecha() {
$this->cnx != NULL ? $this->cnx = NULL : NULL;
}
}
funcoes.mysql.php
class Funcao extends Conexao {
private $campos;
private $tabela;
private $where, $whereSQL;
private $order, $orderSQL;
private $limit, $limitSQL;
public function consulta($obj, $campos, $tabela, $where, $order, $limit) { // passo a instância da conexão para $obj
$whereSQL = !empty($where) ? ' WHERE ' . $where : '';
$orderSQL = !empty($order) ? ' ORDER BY ' . $order : '';
$limitSQL = !empty($limit) ? ' ORDER BY ' . $limit : '';
$query = $obj->query("SELECT " . $campos . " FROM " . $tabela . $whereSQL . $orderSQL . "");
return $query;
}
}
Uso:
$cnx = new Funcao;
$query = $cnx->consulta($cnx, 'id, titulo', 'agenda', '', ' id DESC', '');
if($query) {
while($dados = $query->fetch()) {
echo $dados->titulo . '<br>';
}
$cnx->fecha();
}
else {
echo 'Opa, falhou!';
}
Aguardo opiniões e melhorias se necessários.
Desde já obrigado.
Discussão (31)
Carregando comentários...