Ir para conteúdo

POWERED BY:

Arquivado

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

Visitante

Quando devo usar "::" ou "= new"

Recommended Posts

Visitante

Bom atualmente está acontecendo um paradigma em meu código, tenho uma classe onde ele administra os dados que vem do DB.

Até aí tudo bem, muito lindo, "funcionando", mas, quando tento fazer a instância abaixo de uma outra listagem acontece de misturar os códigos (atribui valor a uma variável que eu não queria que recebesse).

 

exemplo do código:

<?php

class ClasseResponsavel{
    private $quando = null, $dados = null, $tabela = 'null';

    public function set_quando($c_quando){
        self::$quando = $c_quando;
    }

    public function set_quando($c_dados){
        self::$dados= $dados;
    }

public function set_tabela($c_tabela){
        self::$tabela= $c_tabela;
    }

    public function selecionar(){
        //função mysqli que recebe os dados de self::$quando e self::$dados <- um array
        //seleciona e lista
        return array(/*retorna array dos dados do banco*/);
        
    }

}




#agora vem a dúvida
//se eu faço :: ou =new


ClasseResponsavel::set_tabela("minha_tabela");
ClasseResponsavel::set_quando("id = '1'");
while($obj = ClasseResponsavel::selecionar()){
    echo $obj->dado_do_banco;
}


#aqui vem o problema
//caso não use o set_quando, o codigo coloca o conteúdo do quando na de baixo

ClasseResponsavel::set_tabela("minha_outra_tabela");
while($obj_b = ClasseResponsavel::selecionar()){
    echo $obj_b->dado_do_banco;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é um problema do escopo estático, o que, no seu caso, é muito ruim. Conexões com banco de dados e statements não devem ser estáticos.

 

Se você não limpar a variável (método set_quando), ela continuará com o último valor adicionado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, se você usar diretamente a PDO ou MySQLi, já terá tudo da forma mais recomendada.

 

Apesar da sua classe ser um Wrapper e facilitador, ela acaba criando outros problemas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Beraldo, também moderador aqui do fórum, tem bons materiais:

http://rberaldo.com.br/como-atualizar-php-mysql-mysqli/

http://rberaldo.com.br/pdo-mysql/

 

No mais é no manual mesmo.

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.