Salut à tous !
Voilà, mon problème : j'utilise un première classe nommée "Capitaine" qui, lorsque j'utilise la méthode "creerCapitaine" de celle-ci, instancie la classe "Personne". Ensuite, avec ma classe "Capitaine", je veux récupérer le nom et l'âge du Capitaine via les méthodes de la classe "Personne". A priori ça ne devrait pas poser de pblms, surtout que je l'ai déjà fais et que ça fonctionnait... mais là, je ne sais pas pourquoi, ça ne veut plus marcher !!
Le message d'erreur que j'obtiens : Fatal error: Call to a member function getNom() on a non-object
Voici donc le code, ça sera certainement plus parlant :
La classe Personne (personne.class.php) :
Code :
- <?php
- class Personne
- {
- private $nom = "Nom par defaut";
- private $age = 99;
- /**
- * Constructeur
- *
- * @param string $nom
- * @param integer $age
- */
- public function __construct($nom, $age)
- {
- $this->nom = $nom;
- $this->age = (int)$age;
- }
- /**
- * Retourne le nom
- *
- * @return string
- */
- public function getNom()
- {
- return $this->nom;
- }
- /**
- * Retourne l'age
- *
- * @return integer
- */
- public function getAge()
- {
- return $this->age;
- }
- /**
- * Destructeur
- *
- */
- public function __destruct()
- {
- $this->nom = null;
- $this->age = null;
- }
- }
- ?>
|
et voici maintenant le code de la classe Capitaine :
Code :
- <?php
- require_once("personne.class.php" );
- class Capitaine
- {
- private $leCapitaine = null;
- /**
- * Crée un nouveau capitaine
- *
- * @param string $nom
- * @param integer $age
- */
- public function creerCapitaine($nom, $age)
- {
- $this->leCapitaine = new Personne($nom, $age);
- }
- /**
- * Retourne le nom du Capitaine
- *
- * @return string
- */
- public function NomDuCapitaine()
- {
- return $this->leCapitaine->getNom();
- }
- /**
- * Retourne l'âge du Capitaine
- *
- * @return integer
- */
- public function AgeDuCapitaine()
- {
- return $this->leCapitaine->getAge();
- }
- }
- $c = new Capitaine("TOTO", 12);
- //Le code qui pose problème !..
- echo "Nom: ".$c->NomDuCapitaine()."<br/>";
- echo "Age: ".$c->AgeDuCapitaine()."<br/>";
- exit();
- ?>
|
Si vous avez une idée ou même une petite piste, je suis preneur !!
Merci d'avance,
Lionel.
Message édité par pot2yaourt le 31-03-2008 à 13:58:07