Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Seguinte estou tendo que chamar classes dentro de classes, ou seja eu estou criando objetos dentro de classes, mas está ocorrendo um problema e vou demonstrar agora:
<?php
class mae {
public $filho;
public $pai;
public function mae() {
$this->filho = new filho();
$this->pai = new pai();
}
}
class filho extends mae {
public $vari;
public function varia() {
$this->vari = 2;
return $this->vari;
}
}
class pai extends mae {
public function imprimir($var) {
echo $var;
}
}
$mae = new mae();
echo $mae->filho->varia();
?>
Se eu fizer isso dará tudo certo, mas:
<?php
class mae {
public $filho;
public $pai;
public function mae() {
$this->filho = new filho();
$this->pai = new pai();
}
}
class filho extends mae {
public $vari;
public function varia() {
$this->vari = 2;
return $this->vari;
}
}
class pai extends mae {
public function imprimir() {
echo $this->vari;
}
}
$mae = new mae();
$mae->pai->imprimir();
?>
Assim não dará.
Ou seja, eu não estou conseguindo passar uma função de uma classe filha para o pai através da mãe ( classe filha -> classe mae -> classe filha 2 ).
Isso é possível?
Abraços.
>
Seguinte estou tendo que chamar classes dentro de classes, ou seja eu estou criando objetos dentro de classes, mas está ocorrendo um problema e vou demonstrar agora:
Ou seja, eu não estou conseguindo passar uma função de uma classe filha para o pai através da mãe ( classe filha -> classe mae -> classe filha 2 ).
Isso é possível?
Amigo, você está confundindo o conceito de herança e, além disso, existe também um problema no seu código, veja:
class mae {
public $filho;
public function mae(){
echo '- recursão -' , PHP_EOL;
$this->filho = new filho();
}
}
class filho extends mae {
public $vari;
public function varia() {
$this->vari = 2;
return $this->vari;
}
}
$teste = new mae();
Nesse fragmento do seu código existirá uma recursão porque quando você usar o construtor new para instanciar a classe filho o construtor da classe mae será chamado que irá instanciar novamente o filho, que por sua vez irá chamar novamente o construtor da classe mae que irá instanciar a classe filho...
a saída disso será:
>
Dê uma estudada em herança, você precisa rever seus conceitos.
;)
O código foi só um exemplo pra mostrar minha dúvida, nem cheguei a checa-lo não :P
Muito obrigado, então devido a hierarquia isso não é possível.
Obrigado aos dois.
Acredito que não desse jeito, pois não está dentro da hierarquia:
mae, é o princípio
filho e pai, herdam tudo de mae, porém a propriedade vari pertence à filho e não à mae
Se a classe pai estender filho ao invés de mae você conseguirá pois as heranças se acumulariam.
Entendeu?