Classes, héritages, __construct

Résolu
MyXiLo Messages postés 57 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 28 juillet 2006 - 27 août 2005 à 15:58
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 29 août 2005 à 20:06
Bonjour,



D'abord une petite mise en situation:



J'ai deux classes: "class_a" et "class_b".

class_b est l'extension de class_a.



class class_a {}

class class_b extends class_a {}



Je souhaite que lorsque l'on crée un objet de type class_b ca appelle
une fonction de class_a sns l'appeller explicitement. Je pensais que
lorsque l'on creait un objet de type class_b ca appellait la fonction
__construct de la class class_a. Mais ce n'est pas le cas. Y a t il un
autre moyen de le faire sans appeller explicitement une fonction? Ce
qui serait relativement penible car j'ai beaucoup d'extensions de cette
classe alors...





Merci d'avance.

Thomas.

13 réponses

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
27 août 2005 à 16:29
parent::__construct pour appeler un constructeur parent.

Y'a pas d'autres moyens :)
3
MyXiLo Messages postés 57 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 28 juillet 2006
27 août 2005 à 16:35
Raaaaa



C'est assez contraignant tout de meme...



Merci quand meme :]
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
27 août 2005 à 16:45
Salut,



pour PHP 4 :



<?php

class class_a

{

function class_a()

{

echo 'class_a
';

}





}

class class_b extends class_a

{



function class_b()

{

$this->class_a();

echo 'class_b
';

}

}



$classe_b=new class_b;



?>

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
MyXiLo Messages postés 57 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 28 juillet 2006
27 août 2005 à 16:47
Heu oui mais la tu l'appelles explicitement la fonction "$this->class_a();" donc ca m'aide pas :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
27 août 2005 à 16:52
J'ai pas bien dû comprendre ton problème alors...



"ca appelle une fonction de class_a sns l'appeller explicitement"



Bah soit tu l'appelles soit tu l'appelles pas... si tu pouvais être plus clair stp ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
MyXiLo Messages postés 57 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 28 juillet 2006
27 août 2005 à 16:54
Quand tu crees un objet ca appelle la fonction __construct() de
l'objet. Tu ne l'as pas apelle explicitement pourtant puisque tu n'as
pas tapé $monobject->__construct(). C'est ca appeller explicitement
ou implicitement une fonction. Dans le cas de __construct c'est
implicite.
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
27 août 2005 à 16:55
C'est bien ce que je dis, tu ne peux pas appeler explicitement un constructeur parent :)



C'est juste une ligne à rajouter, y'a rien de très dur la dedand =)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
27 août 2005 à 17:02
Ah oki, tout à fait tu ne peux pas, il faut l'appeler explicitement ;-)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 août 2005 à 10:58
Hello,

et puis si ca appelait le constructeur parent implicitement, je te dis pas la merde : et si tu veux un constructeur légèrement différent pour ta classe qui hérite ?
0
MyXiLo Messages postés 57 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 28 juillet 2006
28 août 2005 à 15:58
Si le __construct du parent remplacait celui de lextension mais si les deux s'executaient il n'y aurait pas de pb.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 août 2005 à 21:07
Heu, perso, je n'aimerais pas qu'en appelant 1 méthode, 2 s'éxécutent en simultannée...
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
28 août 2005 à 21:49
C'est clair ;-)
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
29 août 2005 à 20:06
bah ...

un parent::__construct() marche très bien si tu veux appeler un constructeur :o
0
Rejoignez-nous