Aperçu
En PHP, vous pouvez simplement mettre un extra $
devant une variable pour en faire une variable dynamique:
$$variableName = $value;
Bien que je ne le recommande pas, vous pouvez même enchaîner ce comportement:
$$$$$$$$DoNotTryThisAtHomeKids = $value;
Vous pouvez mais n'êtes pas obligé de mettre $variableName
entre {}
:
${$variableName} = $value;
L'utilisation {}
n'est obligatoire que lorsque le nom de votre variable est lui-même une composition de plusieurs valeurs, comme ceci:
${$variableNamePart1 . $variableNamePart2} = $value;
Il est néanmoins recommandé de toujours l'utiliser {}
, car c'est plus lisible.
Différences entre PHP5 et PHP7
Une autre raison de toujours utiliser {}
, c'est que PHP5 et PHP7 ont une manière légèrement différente de traiter les variables dynamiques, ce qui entraîne un résultat différent dans certains cas.
En PHP7, les variables dynamiques, les propriétés et les méthodes seront désormais évaluées strictement dans l'ordre de gauche à droite, par opposition au mélange de cas spéciaux en PHP5. Les exemples ci-dessous montrent comment l'ordre d'évaluation a changé.
Cas 1 : $$foo['bar']['baz']
- Interprétation PHP5:
${$foo['bar']['baz']}
- Interprétation PHP7:
${$foo}['bar']['baz']
Cas 2: $foo->$bar['baz']
- Interprétation PHP5:
$foo->{$bar['baz']}
- Interprétation PHP7:
$foo->{$bar}['baz']
Cas 3: $foo->$bar['baz']()
- Interprétation PHP5:
$foo->{$bar['baz']}()
- Interprétation PHP7:
$foo->{$bar}['baz']()
Cas 4: Foo::$bar['baz']()
- Interprétation PHP5:
Foo::{$bar['baz']}()
- Interprétation PHP7:
Foo::{$bar}['baz']()