Doebber 0 Denunciar post Postado Julho 30, 2011 so novo em php orientado a objetos como eu fasso pra conectar somente uma vez a funcao? por exemplo esse é meu codigo de conexao. <?php class conexao{ private $host = "localhost"; private $user = "root"; private $pass = "pass"; private $banco = "banco"; private $connect; private $bds; function banco(){ } function conectar(){ $connect = mysql_connect($this->host,$this->user,$this->pass) or die("Erro na conexão com Servidor MySQL!"); $bds = mysql_select_db($this->banco) or die("Banco de dados não encontrado!"); } public function execSql($sql){ $query = mysql_query($sql) or die ("Erro ao selecionar a tabela. mysql_error()"); return $query; } public function desconectar() { mysql_close($this->connect); } public function __destruct(){ } } ?> e nas classes das outras funcões eu uso o seguinte codigo para chamar a função. exemplo da classe produtos class produtos{ private $banco; public function produtos(){ $this->banco = new conexao; $this->banco->conectar(); } ///aki as funções public function __destruct(){ $this->banco->desconectar(); unset($this->banco); $this->banco = null; } } mas quando eu uso duas classes na mesma pagina da erro que não é possivel redeclarar a classe conexao. "Cannot redeclare class conexao" axo que isso ocorre porque em cada classe ele declara a classe conexao, como fasso pra declarar ela somente uma vez? ou a funcao destruct n deveria resolver isso? problema resolvido! Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 30, 2011 Pelo seu include. você deve estar usando 'include' direto, ou 'require', tente como 'include_once' ou 'require_once'. Agora vai algumas dicas, se você tem um destrutor na classe, isso aqui não faz sentido: public function desconectar() { mysql_close( $this->connect ); } Você pode colocar o close, no bloco de código do destruct, fica bem melhor, também recomendo que utilize outros meios de conexão com o mysql, utilizando outras bibliotecas, como a MySQLi ou PDO. Compartilhar este post Link para o post Compartilhar em outros sites