Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tiujhou

Qual a melhor forma de fazer um class para buscar dados no BD

Recommended Posts

Boa noite...

 

Estou com dúvidas em relação a criação de uma class para fazer SELECT, UPDATE INSERT ETC em um banco de dados...

 

Qual a melhor maneira, para eu não ficar repetindo os códigos:

public function select_db($cor){
       $conn->prepare("SELECT * FROM db WHERE um = :cor");
       $conn->bindValues(:cor, $cor);
       $conn->execute();
        return $conn->fecth();
}

Entende, qualquer coisa que eu busque no banco de dados tenho que criar um novo método... COmo vocês fazem para fazer isso, sem que fique muito repetitivo os códigos...

 

Pois imagina, ao invés de fazer um prepare, eu utilize Query, ao invés de fecth eu utilize FecthAll... BindValues, BindParam etc etc...

 

Como vocês minimizam seus códigos em relação a isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apesar de eu não saber se eu estou quebrando algum principio eu faço assim.

 

classe de Conexão

<?php

abstract class Connection {

    private function __construct(){}
    private function __clone(){}

    protected static function open()
    {
        try
        {
            $dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME;
            return new PDO($dsn, DB_USER, DB_PASS, array(
                PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC));
        }
        catch(PDOException $e)
        {
            print_r($e->getMessage());
        }
    }
}
?>

Classe Mapper onde fica apenas os query

abstract class SiteMapper extends Connection {

    private function __construct(){}
    private function __clone(){}

    protected static function getTabelaselect()
    {
        return "SELECT * FROM tabela";
    }
}

e classe Site

class Site extends SiteMapper{

    public function __construct(){}
    private function __clone(){}

    public function getTabela(){
        try{
            $conn = Connection::open();
            $tabela = $conn->prepare(SiteMapper::getTabelaselect());
            $tabela->execute();
            $data = $tabela->fetchAll(PDO::FETCH_OBJ);
            $conn = null;
            return $data;
        }
        catch(PDOException $e){
            print_r($e->getMessage());
            $conn = null;
        }
    }
}

Lógico que é apenas um exemplo, não uso Site e SiteMapper, uso conforme o projeto demanda, Produtos && ProdutosMapper, Vendas && VendasMapper...

 

Mais não aceite meu formato como correto, sou Junior no PHP mais ou menos 1 ano de experiência.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Cara estava pensando em utilizar da maneira que você coloca... colocar uma classe contendo todos as querys, tabelas e colunas dentro de arrays... daí criar alguns métodos, especificando fetchAll, fetch, BindValues, PramValues etc...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.