Jump to content

Beto Lima

Members
  • Content count

    417
  • Joined

  • Last visited

Community Reputation

0 Comum

1 Follower

About Beto Lima

  1. Beto Lima

    [Resolvido] pdo + singleton

    ta certo William, realmente foi uma mancada...perdão aí... Obrigado João pela força, obrigado a todos tb....
  2. Beto Lima

    [Resolvido] pdo + singleton

    ok Evandro entendi essa parte, a minha última dúvida seria a diferença de fetch pra fetchAll Pessoal não sei o que pode estar havendo pois fiz exatamente como passado.... Registry.php <?php /** * Exemplo de implementação de Singleton * Dica de leitura: Design Patterns, elements of reusable object-oriented software * ISBN: 0-201-63361-2 * GoF: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides * 3.5 Creational patterns, Singleton */ class Singleton implements IteratorAggregate { /** * Instância única de Singleton * @staticvar * @var Singleton */ private static $instance; /** * @var array */ private $data; /** * Sim, o construtor possui visibilidade protected, isso garantirá que apenas o método * getInstance() possa criar a instância do objeto */ protected function __construct(){ $this->data = array(); } /** * Adiciona um dado qualquer à instância do objeto, ao contrário do getInstance(), esse * é um método do objeto (instância única de Singleton) * @param mixed $data Um dado qualquer que será adicionado à instância do objeto */ public function addData( $data ){ $this->data[] = $data; } /** * Provê um Iterator para iteração dos dados armazenados pelo Singleton * @return Iterator */ public function getIterator(){ return new ArrayIterator( $this->data ); } /** * Operação de classe (estática) que permite acessar a única instância de Singleton * @return Singleton */ public static function getInstance(){ if ( self::$instance ) return self::$instance; else { self::$instance = new Singleton(); return self::$instance; } } } ?> teste.php <?php require 'Registry.php'; $pdo = new PDO( 'mysql:host=localhost;dbname=base' , 'root' , '' ); $Registry = Registry::getInstance(); $Registry->set( 'PDO' , $pdo ); $pdo = Registry::getInstance()->get( 'PDO' ); $stm1 = $pdo->query( 'SELECT * FROM eventos' ); foreach ( $stm1->fetchAll( PDO::FETCH_OBJ ) as $evento ){ echo $evento->id; } $stm2 = $pdo->query( 'SELECT * FROM noticias' ); foreach ( $stm2->fetchAll( PDO::FETCH_OBJ ) as $noticia ){ echo $noticia->titulo; } $stm3 = $pdo->query( 'SELECT * FROM login' ); foreach ( $stm3->fetchAll( PDO::FETCH_OBJ ) as $login ){ echo $login->usuario; } ?> erro: Fatal error: Class 'Registry' not found in /var/www/TEMP/registry/teste.php on line 6
  3. Beto Lima

    [Resolvido] pdo + singleton

    certo, hoje eu uso assim while ($linha = $result->fetch(PDO::FETCH_OBJ)) { echo $linha->campo } vi que você colocou o fetchAll, mas o fetch não pega todos os registros tb?
  4. Beto Lima

    [Resolvido] pdo + singleton

    João, entendi da forma que voce postou. Caso eu queira fazer dois selects de tabelas distintas na mesma pagina eu só replico isso? $registry = Registry::getInstance(); $pdo = $registry->get( 'PDO' ); $stm = $pdo->query( 'SELECT * FROM `outra_tabela`' ); foreach ( $stm->fetchAll( PDO::FETCH_OBJ ) as $outra_tabela ){ echo $outra_tabela->campo; echo $outra_tabela->outro_campo; } E outra dúvida, no final do script não preciso definir nada como null para limpar, fechar conexão ou algo do tipo?
  5. Beto Lima

    [Resolvido] pdo + singleton

    Caro João Batista, pelo simples fato entendi o conceito..."como uma caixa onde você coloca coisas; Cada uma dessas coisas, são objetos que você usará por toda a aplicação" Assim, eu comentei que não iria pedir esmolas e coisas prontas, mas por acaso você teria como demonstrar um exemplo de uma conexão com pdo selecionando uma tabela qualquer no mysql ou postgres? para eu ter um compreendimento melhor. /** * Exemplo de Registry */ class Registry { /** * Instância única de Registry * @var Registry */ private static $instance; e o resto de todo seu cód....não vou copiar todo, mas imagina ele todo aqui. e a parte de baixo nao entendi 100% de como usa-la $registry = Registry::getInstance(); $registry->set( 'Banco de dados' , new Connection() ); //Usando sua própria classe para criar o objeto. //muito código depois... $db = Registry::getInstance()->get( 'Banco de dados' ); // ali vai somente o nome da base? $stm = $db->prepare( 'SELECT :message AS `message`;' ); $stm->bindValue( ':message' , 'DRY !!!' , PDO::PARAM_STR ); // DRY??? $stm->execute(); echo $stm->fetch( PDO::FETCH_OBJ )->message; grato
  6. Beto Lima

    [Resolvido] pdo + singleton

    Gente obrigado pelas dicas, realmente vou ter que dar uma parada e analisar tudo novamente e tentar se adaptar a estas situações....não consegui entender ainda o registry mas acredito que com mais tempo de estudo tudo ficará mais claro...não vou extender este post perguntando novamente sobre as mesmas coisas....acho que o que tem aqui já é muito bom para estudo e vou tentar seguir... obrigado mesmo a todos.... qualquer coisa prendo o grito ok? abs
  7. Beto Lima

    [Resolvido] pdo + singleton

    Caro João, que aula hein....agradeço pela total atenção...mas assim, estou meio que engatinhando ainda nesse tema pdo, oo, singleton, não consegui ainda me aprofundar em design paterns. Especificamente eu vou utilizar somente um banco, porque é pra um site simples que usa mysql. e a minha preocupação seria em utilizar o singleton corretamente aliado ao PDO. Preciso estudar e entender melhor o seu exemplo que de cara já me mostra que é mais avançado. De imediato realmente não vou ter como adaptar isso a minha necessidade justamente porque preciso entender melhor isso. o que voce diria do script que coloquei? posso usar ele sem problemas? ha algo de errado? mais uma vez agradeço pela total atenção e a colaboração, gostaria muito de utilizar o seu exemplo e aprofundar mais, mas não vou ficar pedindo para que alguém meta a mão no script pra mim né....então por isso vou precisar de mais tempo pra estudar a fundo...por enquanto só preciso estar seguro com que estou usando....
  8. Beto Lima

    [Resolvido] pdo + singleton

    Pessoal queria saber se está correto esta forma de singleton com pdo. e tenho uma dúvida no final do script. se há algo a melhorar não exitem em opinar... agradeço... conn.php <?php class Connection extends PDO { private $banco = 'mysql:dbname=nome_da_base;host=localhost'; private $usuario = 'root'; private $senha = ''; public static $handle = null; function __construct( ) { try { if ( self::$handle == null ) { $dados_conexao = parent::__construct( $this->banco , $this->usuario , $this->senha ); self::$handle = $dados_conexao; return self::$handle; } } catch ( PDOException $e ) { echo 'Connection failed: ' . $e->getMessage( ); return false; } } function __destruct( ) { self::$handle = NULL; } } ?> teste.php <?php require_once ("conn.php"); $conn = new Connection; $result = $conn->query("SELECT * FROM tabela"); if($result) { //percorre os resultados via o fetch() while ($linha = $result->fetch(PDO::FETCH_OBJ)) { echo $linha->coluna_da_tabela; } } //fecha a conexão $conn = null; ?> Este $conn = null limpa a conexão de fato ou não preciso usar?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.