nsouzajf 0 Denunciar post Postado Novembro 2, 2012 Colegas, o codigo abaixo era para printar na tela a instancia do objeto, mas nada acontece poderia me dar uma ajuda? Parece que o problema esta na classe base, mas não sei como corrigir. Falo isso pq se eu tirar o abstract da classe base funciona. Mas pode ser suposiçao. <?php require_once 'classes/clientes.class.php'; $cliente = new clientes(); $cliente->setValor('nome',"Maria"); $cliente->setValor('sobrenome',"Antonia"); $cliente->setValor('bairro',"Sao Dimas"); echo '<pre>'; printf($cliente); echo '</pre>'; ?> Abaixo estão as classes para um entendimento melhor. classe cliente <?php require_once ("base.class.php"); class clientes extends base { public function __construct($campos=array()) { parent::__construct(); $this->tabela = "clientes"; if(sizeof($campos)<=0) { $this->campos_valores=array( "nome"=> null, "sobrenome" => null ); } else { $this->campos_valores =$campos; } $this->campopk = "id"; } } ?> Classe Base <?php require_once ("banco.class.php"); abstract class base extends banco { public $tabela = ""; public $campos_valores = array(); public $campopk = NULL; public $valorpk = NULL; public $extras_select = ""; public function addCampo($campo=NULL,$valor=NULL) { echo("exibir mensagem <br>"); if($campo!=null){ $this->campos_valores($campo) = $valor; } }//fim public function delCampo($campo=NULL) { echo("passou <br>"); if(array_key_exists($campo, $this->campos_valores)){ unset($this->campos_valores[$campo]); } }//fim do método public function setValor($campo=NULL,$valor=NULL) { if($campo!=null && $valor!=null){ $this->campos_valores[$campo] = $valor; } }//fim do método public function getValor($campo=NULL) { if($campo!= null && array_key_exists($campo, $this->campos_valores)){ return $this->campos_valores($campo); }else{ return FALSE; } } } ?> classe banco <?php abstract class banco{ //propriedades public $servidor = "localhost"; public $usuario = "root"; public $senha = "root"; public $nomebanco = "aulas"; public $conexao = "NULL"; public $dataset = "NULL"; public $linhasafetadas = -1; //métodos public function __construct(){ $this->conecta(); echo("chamou constructor banco<br>"); }//fim da classe public function __destruct() { if($this->conexao != Null): endif; }//fim da classe public function conecta(){ $this->conexao = mysql_connect($this->servidor,$this->usuario, $this->senha,TRUE) or die($this->trataErro(__FILE__,__FUNCTION__,mysql_errno(),mysql_error(),TRUE)); mysql_select_db($this->nomebanco) or die($this->trataErro(__FILE__,__FUNCTION__,mysql_errno(),mysql_error(),TRUE)); mysql_query("SET NAMES 'utf8'"); mysql_query("SET character_set_connection=utf8"); mysql_query("SET character_set_client=utf8"); mysql_query("SET character_set_results=utf8"); }//Fim da classe public function trataErro($arquivo=NULL,$rotina=NULL,$numero=NULL,$msgerro=NULL,$geraexcpt=FALSE){ if($arquivo==NULL) $arquivo="nao informado"; if($rotina==NULL) $rotina="nao informado"; if($numero==NULL) $numero=mysql_errno($this->conexao); if($msgerro==NULL) $msgerro=mysql_error($this->conectar()); $resultado = 'Ocorreu um erro com os seguinte detalhes:<br /> <strong> Arquivo:</strong> '.$arquivo.'<br /> <strong> Rotina:</strong> '.$rotina.'<br /> <strong> codigo:</strong> '.$numero.'<br /> <strong> mensagem:</strong> '.$msgerro; if($geraexcpt==false): echo($resultado); else: die($resultado); endif; }//fim da classe } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Novembro 2, 2012 Remova o parent::__construct(); da classe filha que deve funcionar. Compartilhar este post Link para o post Compartilhar em outros sites
nsouzajf 0 Denunciar post Postado Novembro 3, 2012 Remova o parent::__construct(); da classe filha que deve funcionar. Não resolveu, ademais tenho que executar métodos da classe base e executar a conexão da classe banco, pois isso não posso remover o parent:: __constructor() entendeu? Compartilhar este post Link para o post Compartilhar em outros sites
Rox Duran 0 Denunciar post Postado Dezembro 12, 2012 aqui nessa parte $this->campo_valores = array( "nome" => NULL, "sobrenome" => NULL }; você fechou o array com chave o certo e fechar com parentes que vai ficar dessa maneira $this->campo_valores = array( "nome" => NULL, "sobrenome" => NULL ); flw Compartilhar este post Link para o post Compartilhar em outros sites