2013-02-10 7 views
0

Probablement une question idiote .. mais comment utiliser correctement les méthodes de la classe Test dans la classe Testb sans les surcharger?Utiliser la méthode de la classe parente lors de l'extension

<?php 
class Test { 

    private $name; 

    public function __construct($name) { 
     $this->name = $name; 
    } 

    public function getName() { 
     return $this->name; 
    } 

} 

<?php 

class Testb extends Test { 

    public function __construct() { 
     parent::__construct($name); 
    } 

} 

<?php 

include('test.php'); 
include('testb.php'); 

$a = new Test('John'); 
$b = new Testb('Batman'); 

echo $b->getName(); 
+1

Quelle est la sortie actuelle que vous obtenez? – Achrome

+0

Je n'ai rien .. – Reshad

Répondre

1

Vous devez donner le constructeur Testb un paramètre $name trop si vous voulez être en mesure d'initialiser avec cet argument. J'ai modifié votre classe Testb afin que son constructeur prenne réellement un argument. De la façon dont vous l'avez actuellement, vous ne devriez pas pouvoir initialiser votre classe Testb. J'utilise le code comme suit:

<?php 
class Test { 

    private $name; 

    public function __construct($name) { 
     $this->name = $name; 
    } 

    public function getName() { 
     return $this->name; 
    } 

} 

class Testb extends Test { 

    // I added the $name parameter to this constructor as well 
    // before it was blank. 
    public function __construct($name) { 
     parent::__construct($name); 
    } 

} 

$a = new Test('John'); 
$b = new Testb('Batman'); 

echo $a->getName(); 
echo $b->getName(); 
?> 

Vous n'avez peut-être pas activé le rapport d'erreurs? Dans tous les cas, vous pouvez vérifier mes résultats ici: http://ideone.com/MHP2oX

+0

Aahh C'était la partie que j'ai ratée Je n'ai pas ajouté l'argument dans ma classe enfant lors de l'appel du constructeur parent :) merci! – Reshad

Questions connexes