Ir para conteúdo

Arquivado

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

montano

[Resolvido] Nao Estancia super classe - PHP5

Recommended Posts

bom dia,

 

Meu objeto esta estanciando uma classe que herda de uma outra, porem nao esta passando pelo construct da superclasse.

 

$obj = new Plano100 ($servidor,$usuario,$senha,$bd);

class Plano100 extends Model
{
    function __construct()
    {
    	echo "Estanciou Plano 100";
    }
}

class Model
{
    private $link;
    private $errMsg;

    public function __construct($host, $user, $pass, $dbname)
    {
    	echo "estanciou Model";
        $this->link = new mysqli($host, $user, $pass, $dbname);

        if (mysqli_connect_errno())
        {
            $this->errMsg = "Erro na Conexão:" . mysqli_connect_error();
            return false;
        }
    }
}

 

Ja testei os include estao funcionando, e a class Model tambem ja foi testada, um outro objeto consegue estanciar ela direto, porem nao to conseguindo fazer o meu objeto : $obj estanciar Plano100 porem quero usar as function do Model. <o> help!. hehhe

 

 

vlw

 

 

OBS: Na tela só esta me dizendo "Estanciou Plano100"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Will,

 

Mas eu quero fazer por __construct, um objeto ao estanciar uma classe que tenha uma super classe, primeiramente ele executa o __construtc da super e depois a da classe que herda.

 

nao?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentro do construct da classe que herda, usa isto.

 

class Plano100 extends Model
{
   function __construct()
   {
       echo "Estanciou Plano 100";
       parent::__contruct();
   }
}

 

Deve funcionar

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

funcinou Matias.

 

Porem agora fica a duvida, uma classe que esta sendo herdada ela herda da classe super todas function.

 

Por exemplo

 

class super {
 __construc(){

echo "Sou classe super";
}

function teste(){

}
}

class herda extends super{

__construct(){
echo "sou classe que herda";
}
}

$obj = new herda();
$obj->teste();

No meu exemplo posso usar function teste como se fosse do $obj pois ele herda ela, e na tela ira me retornar ao estanciar.

 

"Sou classe super" "sou classe que herda";

 

Estou errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue um exemplo que acho que agora meu conceito esta certo.

Eu estava equivocado antes, ao pensar que a classe herdeira herda o construtor direto?

vlw

class Super {
	public $servidor;
	
	function __construct ($servidor){

	$this->servidor = $servidor;
	}	
	function teste(){
		echo $this->servidor;		
	}
}

class Herda extends Super{
	function __construct ($servidor){
     parent::__construct($servidor);
	}
}

$obj = new Herda('servidor');
$obj->teste();

Compartilhar este post


Link para o post
Compartilhar em outros sites

class Plano100 extends Model
{
    function __construct($servidor, $usuario, $senha, $bd)
    {
        parent::__construct($servidor, $usuario, $senha, $bd);
    }
}

$obj = new Plano100 ($servidor,$usuario,$senha,$bd);
$obj->execute("INSERT INTO" . $tabela . "(" . $campos . ") VALUES (" . $propriedades . ")");

class Model
{
    private $link;
    private $errMsg;

    public function __construct($host, $user, $pass, $dbname)
    {
        $this->link = new mysqli($host, $user, $pass, $dbname);

        if (mysqli_connect_errno())
        {
            $this->errMsg = "Erro na Conexão:" . mysqli_connect_error();
            return false;
        }
    }

    function execute($query)
    {

        if ($result = $this->link->query($query))
            return $result;
        else
            $this->errMsg = "Erro ao executar:" . mysqli_error();
        return false;
    }
}

Estou tentando inserir conteudo em uma tabela desse jeito.

Porem nao esta funcionando :S

 

    $obj = new Plano100 ($servidor,$usuario,$senha,$bd);
    $obj->execute("INSERT INTO tb_plano100 (cliente) VALUES ('teste')");
    $obj->redireciona();

Funcionou assim, entao deve ser erro nos meus campos.

 

valeu pessoal, ajudaram muito.

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.