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

  FORUM HardWare.fr
  Programmation
  PHP

  Pblm héritage et méthode "sans" argument...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pblm héritage et méthode "sans" argument...

n°1641617
pot2yaourt
Posté le 12-11-2007 à 15:11:29  profilanswer
 

Salut tlm !
 
Voilà, au cours d'un développement je suis tombé sur un petit problème...
 
J'ai une classe "mère" qui possède plusieurs méthodes (ainsi que son constructeur) avec un nombre d'arguments variables. Le problème est que lorsque ma classe "fille" hérite du constructeur et des méthodes de la classe "mère", rien ne marche...  
 
Un petit bout de code sera sans doute plus parlant :
 

Code :
  1. <?php
  2. class Mere
  3. {
  4.     protected $var = array();
  5.     public function getIt()
  6.     {
  7.         // récupère un tableau d'arguments passé à la méthode
  8.         $this->var = func_get_args();
  9.     }
  10.     public function cnt()
  11.     {
  12.         return count($this->var);
  13.     }
  14. }
  15. class Fille extends Mere
  16. {
  17.     public function getIt()
  18.     {
  19.         parent::getIt();  //    <-- Ne fonctionne pas !
  20.     }
  21.     public function cnt()
  22.     {
  23.         return parent::cnt();
  24.     }
  25. }
  26. $m = new Mere();
  27. $m->getIt("toto","titi","tata" );
  28. echo $m->cnt(); // affiche 3
  29. $f = new Fille();
  30. $f->getIt("toto","titi","tata" );
  31. echo $f->cnt(); // affiche 0 au lieu de 3 !!!
  32. ?>


 
Au final, je suis obligé de reproduire à l'identique le traitement effectué dans la méthode de la classe mère pour la méthode de la classe fille.
Ici, ça revient donc à remplacer "parent::getIt();" par "$this->var = func_get_args();".
 
J'aurai aimé savoir si quelqu'un était déjà tombé sur ce "pblm" et, si oui, comment il l'avait résolu.
 
Merci d'avance pour vos réponses,
Lionel.


Message édité par pot2yaourt le 12-11-2007 à 20:49:43
mood
Publicité
Posté le 12-11-2007 à 15:11:29  profilanswer
 

n°1643551
pot2yaourt
Posté le 15-11-2007 à 18:03:46  profilanswer
 

Suis-je vraiment le seul à qui est arrivé ce problème ?
Ou est-ce que c'est mon message qui n'est pas clair ?

n°1643591
PierreC
Posté le 15-11-2007 à 19:09:20  profilanswer
 

je suis pas expert en object mais j'ai fouillé un peu, c'est vrai que ton problème est surprenant. Ca etre la fonction  func_get_args() qui pose probleme.
Par contre si la question etait seulement rappeler la methode de la classe parent tu n'a pas à la redefinir (mais je suppose que tu souhaitait la rappeler pour la modifier)
 
ceci fonctionnerai tres bien par exemple
 

Code :
  1. <?php
  2. class Mere
  3. {
  4.     protected $var = array();
  5.     public function getIt()
  6.     {
  7.         // récupère un tableau d'arguments passé à la méthode
  8.         $this->var = func_get_args();
  9.     }
  10.     public function cnt()
  11.     {
  12.         return count($this->var);
  13.     }
  14. }
  15. class Fille extends Mere
  16. {
  17. }
  18. $m = new Mere();
  19. $m->getIt("toto","titi","tata" );
  20. echo $m->cnt(); // affiche 3
  21. $f = new Fille();
  22. $f->getIt("toto","titi","tata" );
  23. echo $f->cnt(); // affiche 0 au lieu de 3 !!!
  24. ?>


 
 
Sinon plutot que de passer une liste de valeur tu passe un tableau. j'ai essayé d'autre chose comme ceci qui peux te convenir :  

Code :
  1. <?php
  2. class Mere
  3. {
  4.     public $var ;//= array();
  5.     public function getIt($tmp)
  6.     {
  7.         $this->var=$tmp;
  8.     }
  9.     public function cnt()
  10.     {
  11.         return count($this->var);
  12.     }
  13. }
  14. class Fille extends Mere
  15. {
  16.     public function getIt($tmp)
  17.     {
  18.         parent::getIt($tmp);  //    <-- fonctionne !
  19.     }
  20.     public function cnt()
  21.     {
  22.         return parent::cnt();
  23.     }
  24. }
  25. $m = new Mere();
  26. $tab=array("toto","titi","tata" );
  27. $m->getIt($tab);
  28. echo $m->cnt(); // affiche 3
  29. echo "<br/>";
  30. $f = new Fille();
  31. $tab=array("toto","titi","tata" );
  32. $f->getIt($tab);
  33. echo $f->cnt(); // affiche 0 au lieu de 3 !!!
  34. ?>


 
 


---------------
Du tofu en Alsace : www.tofuhong.com

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

  Pblm héritage et méthode "sans" argument...

 

Sujets relatifs
pb "return" méthode javaProbleme de methode
envoyer un fichier en methode POSTProblème objet en argument vba
Ecrire dans un argument en Javascript ?Methode agile et groupe de travail
les ' se transforment en \' par la méthode POSTHeritage et surdéfinition...
Datagrid la méthode d'updatePointeur de fonction en argument [Résolu]
Plus de sujets relatifs à : Pblm héritage et méthode "sans" argument...


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