tiujhou 7 Denunciar post Postado Março 18, 2015 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
Willian M R 1 Denunciar post Postado Março 18, 2015 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
tiujhou 7 Denunciar post Postado Março 18, 2015 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