variable dynamique et this
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 :mrgreen::
Code:
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();
?> |
renvoie
Code:
1 2
| OK
Fatal error: Call to a member function ditCoucou() on a non-object |
alors que
Code:
1 2 3
| ${'this'}->ditCoucou();
var_dump(${'this'});
${$a}->ditCoucou(); |
renvoie
Code:
OKobject(Test)#1 (0) { } OK
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).
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 :D