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

  FORUM HardWare.fr
  Programmation
  PHP

  Afficher la variable local d'une fonction dans une classe fille

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Afficher la variable local d'une fonction dans une classe fille

n°2214156
zerbus
Posté le 19-12-2013 à 23:39:24  profilanswer
 

Bonjour,
 
Je viens vous voir car j'ai un problème, pourtant simple, devant lequel je sèche.
Je suis débutant en php et tente d'utiliser de l'héritage.  
Un exemple de ce que je veux faire valant toutes les descriptions :
 
abstract class Class1 {
...
   public function Class1(){
   ...
   $this->insert();
   ...
   }
   public abstract function insert();
...
}
class Class2 extends Class1{
private $varibable;
 
    public function Class2(){
       $this->variable = "toto";
   }
 
   public function insert(){
      echo 'variable ='.$this->variable;  
   }
}
 
//$class2 = new Class2();
// Résultat obtenu :  
//variable =
 
-----------------
 
 
Voilà, j'ai écris ça a l'arrache donc merci de ne pas tenir compte des fautes de frappes :p
Le problème est donc : j'ai un classe abstraite avec une fonction abstraite. Dans la fonction implémentée de la classe fille je veux afficher une variable qui est locale a la classe fille, mais celle-ci est vide à l'entrée dans la fonction.
 
Je crois comprendre d'où vient le problème (que l'appel de insert est celui de la classe mère) mais je n'en suis pas sûr, et surtout je ne vois pas comment le résoudre sans modifier mon architecture.
 
Si quelqu'un peut m'éclairer je lui en serai très reconnaissant ;)
 
Désolé si c'est une question classique à laquelle vous avez répondu 1000 fois mais je sèche aussi sur les mots clés pour faire une recherche. Je n'ai rien trouvé après une heure.
 
Merci d'avance ;)
 
 
Edit : En mettant le "$this->insert();" dans le contructeur de la classe fille plutôt que celui de la classe mère cela fonctionne, donc c'est bien le problème que j'avais identifié, mais je ne comprends tout de même pas exactement pourquoi ça ne fonctionne pas et j'aimerais savoir s'il y a une solution autre.


Message édité par zerbus le 19-12-2013 à 23:45:19
mood
Publicité
Posté le 19-12-2013 à 23:39:24  profilanswer
 

n°2214219
rufo
Pas me confondre avec Lycos!
Posté le 20-12-2013 à 11:45:04  profilanswer
 

Je vois les choses se passer comme ça : sur le new Class2(), le constructeur de Class1() est appelé. Celui-ci appelle la fonction insert() qui fait un echo de $variable qui, à ce stade, est vide car celle-ci n'est pas encore initialisée puisque le constructeur de Class2() n'a pas été encore appelé. Ensuite, le constructeur Class2() est appelé et initialise $variable avec "toto".
 
Du reste, si, après ton new, tu fais un $class2->insert(), je suis sûr que le echo va bien afficher le contenu de $variable...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2214265
zerbus
Posté le 20-12-2013 à 19:55:48  profilanswer
 

Mais oui bien sûr !
J'ai fais l'instanciation de mes variables après l'appel au constructeur parent.
Je suis parti sur une mauvaise piste et n'ai donc pas vu l'évidence.
 
Chapeau pour avoir trouvé alors que je n'ai pas mis l'appel au constructeur dans l'exemple.
 
Merci beaucoup

n°2214294
rufo
Pas me confondre avec Lycos!
Posté le 21-12-2013 à 23:58:14  profilanswer
 

l'appel au constructeur parent est implicite dans le cadre d'un héritage ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

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

  Afficher la variable local d'une fonction dans une classe fille

 

Sujets relatifs
Fonction ElseProblème avec fonction pow
fonction gere_expose avec la LibXafficher le contenue d'un tableau dans une interface graphique
Erreur incompréhensible d'une variable de type int[JAVASCRIPT + HTML] Problème fonction Return
MSSQL - SET variableCrée une fonction de photo 'slider'
afficher une adresse memoire sans printf[résolu] Mapping d'image sous Zend
Plus de sujets relatifs à : Afficher la variable local d'une fonction dans une classe fille


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