Bonjour à tous! J'ai un petit soucis dont je n'arrive pas à dénicher d'infos suffisantes pour m'aider. Je me demande même si c'est réellement possible...
J'ai deux classes : C1 et C2 qui hérite de C1
Mon soucis est le suivant : en fait j'ai une multitude de classes type C2 et je voudrais qu'elles aient chacune leur version de la valeur de $member qui est statique. Seulement si dans mon code je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 class C1 { static $member = "defaut"; function print_member() { echo self::$member."<br />"; } } class C2 extends C1 { static $member; // Pleins de trucs sympas ^^ }
C'est "defaut" qui est affiché et non "youpi" : il n'y a pas surcharge du membre statique à travers la fonction. Si je retire la ligne "static $member;" dans C2, alors à chaque nouvelle affectation de $member, toutes les classes filles de C1 auront le même membre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 C2::$member = "youpi"; $c2 = new C2(); $c2->print_member();
Mon but c'est justement que la fonction soit la même pour tous mais qu'elle fasse intervenir le membre statique de chacun.
Pour la petite histoire, ce que je compte faire c'est affecter un nom de table MySQL à ce membre statique et créer des fonctions plutôt complexes utilisant ce membre dans les requêtes. Le but ultime étant bien évidemment de ne pas recopier chaque fonction de C1 dans chaque classe C2 et de garder le fait que ce membre soit statique (ainsi le nom de la table est commun à chaque objet de même classe C2).
Comment pouvoir surcharger un membre statique d'une classe mère et l'utiliser dans les fonctions non surchargées ? Est-ce possible en PHP5 ?
Merci de votre aide, et désolé si le sujet est déjà passé ; j'ai eu beau cherché j'ai pas trouvé mon bonheur!
Partager