Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1139 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Incompréhensible...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Incompréhensible...

n°1710254
pot2yaourt
Posté le 31-03-2008 à 13:37:09  profilanswer
 

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 :
  1. <?php
  2. class Personne
  3. {
  4. private $nom = "Nom par defaut";
  5. private $age = 99;
  6. /**
  7.  * Constructeur
  8.  *
  9.  * @param string $nom
  10.  * @param integer $age
  11.  */
  12. public function __construct($nom, $age)
  13. {
  14.  $this->nom = $nom;
  15.  $this->age = (int)$age;
  16. }
  17. /**
  18.  * Retourne le nom
  19.  *
  20.  * @return string
  21.  */
  22. public function getNom()
  23. {
  24.  return $this->nom;
  25. }
  26. /**
  27.  * Retourne l'age
  28.  *
  29.  * @return integer
  30.  */
  31. public function getAge()
  32. {
  33.  return $this->age;
  34. }
  35. /**
  36.  * Destructeur
  37.  *
  38.  */
  39. public function __destruct()
  40. {
  41.  $this->nom = null;
  42.  $this->age = null;
  43. }
  44. }
  45. ?>


 
et voici maintenant le code de la classe Capitaine :  
 

Code :
  1. <?php
  2. require_once("personne.class.php" );
  3. class Capitaine
  4. {
  5. private $leCapitaine = null;
  6. /**
  7.  * Crée un nouveau capitaine
  8.  *
  9.  * @param string $nom
  10.  * @param integer $age
  11.  */
  12. public function creerCapitaine($nom, $age)
  13. {
  14.  $this->leCapitaine = new Personne($nom, $age);
  15. }
  16. /**
  17.  * Retourne le nom du Capitaine
  18.  *
  19.  * @return string
  20.  */
  21. public function NomDuCapitaine()
  22. {
  23.  return $this->leCapitaine->getNom();
  24. }
  25. /**
  26.  * Retourne l'âge du Capitaine
  27.  *
  28.  * @return integer
  29.  */
  30. public function AgeDuCapitaine()
  31. {
  32.  return $this->leCapitaine->getAge();
  33. }
  34. }
  35. $c = new Capitaine("TOTO", 12);
  36. //Le code qui pose problème !..
  37. echo "Nom: ".$c->NomDuCapitaine()."<br/>";
  38. echo "Age: ".$c->AgeDuCapitaine()."<br/>";
  39. exit();
  40. ?>


 
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
mood
Publicité
Posté le 31-03-2008 à 13:37:09  profilanswer
 

n°1710262
yellu
Posté le 31-03-2008 à 13:50:53  profilanswer
 

Ben tu as instancier Capitaine, mais la méthode creerCapitaine tu ne l'as pas appelé donc leCapitaine est encore null.
 
ou alors rajoute
 

Code :
  1. public function __construct($nom, $age) {
  2.     $this->creerCapitaine($nom, $age);
  3. }


Message édité par yellu le 31-03-2008 à 13:52:31
n°1710264
anapajari
s/travail/glanding on hfr/gs;
Posté le 31-03-2008 à 13:51:14  profilanswer
 

public function creerCapitaine devrait être __construct (enfin si j'ai bien compris ce que tu cherches à faire ... )


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1710265
yellu
Posté le 31-03-2008 à 13:53:01  profilanswer
 

C'est l'un des solution (j'ai éditer mon post)

n°1710266
pot2yaourt
Posté le 31-03-2008 à 13:57:18  profilanswer
 

Ah mais quelle truffe je suis !!! Grrr !!! :(
 
A force de faire des copier/coller par-ci par-là, j'ai oublié le principal !!  
Décidément, aujourd'hui j'ai vraiment pas les yeux en face de trous ! Vivement ce soir que je me couche !
 
Merci pour tout !!!
Lionel.

n°1710763
naeh
Posté le 31-03-2008 à 23:52:33  profilanswer
 

le mieux (logique ?) serait que Capitaine hérite de Personne vu que le capitaine est une personne avant tout ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Incompréhensible...

 

Sujets relatifs
[Résolu] Ouvrir un fichier .xsl[Resolu]Stockage d'objets sérialisés
[résolu]Formulaire avec des "radio" [Résolu][Ubuntu] Copie automatique de fichiers au branchement clé usb
[resolu] Jar executable[PHP] résolu - impossible de recupérer les $_POST
[RESOLU] lister un répertoire dans l'ordre alphabétique[résolu] liens vers requetes SQL
[HTML/CSS] Probleme incomprehensible [RESOLU][php] Fonction mail, erreur incompréhensible [Résolu]
Plus de sujets relatifs à : [Résolu] Incompréhensible...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR