2014-06-13 5 views
0

J'ai essayé un code que j'ai appelé une méthode parente dans sa fille __construct et itreturns NULL, Je ne sais pas pourquoi? Je serais très heureux si quelqu'un pouvait m'expliquer pourquoi. Merci d'avance.méthode de classe parente renvoie null dans sa fille __construct()

Voici mon code

<?php 
class me 
{ 
    public $arm; 
    public $leg; 
    public function __construct() 
    { 
    $this->arm = 'beautiful'; 
    $this->leg = 'pretty'; 
    } 

    public function setLeg($l) 
    { 
    $this->leg = $l; 
    } 

    public function getLeg() 
    { 
    return $this->leg; 

    } 
} 

class myBio extends me 
{ 

    public $bio; 
    public function __construc() 
    { 
    $this->bio = $this->setLeg(); 
    } 

    public function newLeg() 
    { 
    var_dump($this->bio); 
    } 
    public function tryLeg() 
    { 
    $this->leg = $this->getLeg(); 
    print $this->leg; 
    } 
} 

$mB = new myBio(); 
$mB->newLeg(); 
$mB->tryLeg(); 
?> 

Quand j'appelle: $ mB = new myBio(); $ mB-> newLeg();

, il retourne NULL,

MAIS

$mB->tryLeg(); 

retourne string e, 'jolie'.

+2

'$ this-> bio = $ this-> setLeg();' Typo, 'set = get' – scragar

+0

@scragar: Faut-il être la réponse car il devrait fonctionner avec Typo fixe – niconoe

+1

@niconoe I posté! Comme un commentaire parce que je n'ai même pas lu la question, je faisais défiler et j'ai remarqué un setter utilisé sans argument. Pour tout ce que je savais à l'époque, la question n'avait aucun lien avec mon commentaire, et le commentaire était accessoire. – scragar

Répondre

1

Vous avez une faute de frappe sur cette ligne:

$this->bio = $this->setLeg(); 

Vous appelez votre setter, pas votre getter, et puisque le compositeur ne retourne pas une valeur que vous obtenez null.

Vous avez également mal orthographié construction:

 public function __construc() 

Et vous devez appeler le constructeur parent.

<?php 
class me 
{ 
    public $arm; 
    public $leg; 
    public function __construct() 
    { 
      $this->arm = 'beautiful'; 
      $this->leg = 'pretty'; 
    } 

    public function setLeg($l) 
    { 
      $this->leg = $l; 
    } 

    public function getLeg() 
    { 
      return $this->leg; 

    } 
} 

class myBio extends me 
{ 

    public $bio; 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->bio = $this->getLeg(); 
    } 

    public function newLeg() 
    { 
     var_dump($this->bio); 
    } 
    public function tryLeg() 
    { 
     $this->leg = $this->getLeg(); 
     print $this->leg; 
    } 
} 

$mB = new myBio(); 
$mB->newLeg(); 
$mB->tryLeg(); 
+0

+1 pour l'avatar Disgaea. –

+0

Merci beaucoup. mais j'ai corrigé cette faute de frappe mais son retour toujours NULL –

+0

Deux autres fautes de frappe, essayez la version éditée. http://3v4l.org/6eQ3k – scragar

Questions connexes