Bonjour,
je suis tombé hier sur un problème que je n'ai pas su résoudre.
L'idée est simple.
Nous avons une variable a='this';
nous sommes dans une classe et nous voulons appeler this->ditCoucou();, méthode ditCoucou qui doit afficher 'OK'.
Pour cela, je tente un
${$a}->ditCoucou();
qui devrait donc évaluer $a en this et donc ${$a} en $this, et c'est là que les trucs byzarres commencent:
renvoie
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 <?php class Test{ function Test(){} function doTest(){ $a='this'; ${'this'}->ditCoucou(); //var_dump(${'this'}); ${$a}->ditCoucou(); } function ditCoucou(){ echo "OK"; } } $test = new Test(); $test->doTest(); ?>
alors que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 OK Fatal error: Call to a member function ditCoucou() on a non-object
renvoie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ${'this'}->ditCoucou(); var_dump(${'this'}); ${$a}->ditCoucou();
Autrement dit, l'appel à var_dump permettrait de pouvoir utiliser la syntaxe de l'appel dynamique, alors que sinon on ne peut pas l'utiliser (sans).
Code : Sélectionner tout - Visualiser dans une fenêtre à part OKobject(Test)#1 (0) { } OK
Ca me parait etrange, d'autant que dans la doc ya aucune référence dans les arguments pour var_dump.
Quelqu'un pour éclairer ma lanterne sur ce fameux this?
merci d'avance![]()
Partager