Überblick
In PHP können Sie $
einer Variablen einfach ein Extra hinzufügen, um sie zu einer dynamischen Variablen zu machen:
$$variableName = $value;
Ich würde es zwar nicht empfehlen, aber Sie könnten dieses Verhalten sogar verketten:
$$$$$$$$DoNotTryThisAtHomeKids = $value;
Sie können, müssen aber nicht $variableName
zwischen {}
:
${$variableName} = $value;
Die Verwendung {}
ist nur obligatorisch, wenn der Name Ihrer Variablen selbst aus mehreren Werten besteht, wie folgt:
${$variableNamePart1 . $variableNamePart2} = $value;
Es wird dennoch empfohlen, immer zu verwenden {}
, da es besser lesbar ist.
Unterschiede zwischen PHP5 und PHP7
Ein weiterer Grund, immer zu verwenden {}
ist, dass PHP5 und PHP7 etwas anders mit dynamischen Variablen umgehen, was in einigen Fällen zu einem anderen Ergebnis führt.
In PHP7 werden dynamische Variablen, Eigenschaften und Methoden jetzt streng in der Reihenfolge von links nach rechts ausgewertet, im Gegensatz zu der Mischung von Sonderfällen in PHP5. Die folgenden Beispiele zeigen, wie sich die Reihenfolge der Bewertung geändert hat.
Fall 1 : $$foo['bar']['baz']
- PHP5-Interpetation:
${$foo['bar']['baz']}
- PHP7-Interpetation:
${$foo}['bar']['baz']
Fall 2: $foo->$bar['baz']
- PHP5-Interpetation:
$foo->{$bar['baz']}
- PHP7-Interpetation:
$foo->{$bar}['baz']
Fall 3: $foo->$bar['baz']()
- PHP5-Interpetation:
$foo->{$bar['baz']}()
- PHP7-Interpetation:
$foo->{$bar}['baz']()
Fall 4: Foo::$bar['baz']()
- PHP5-Interpetation:
Foo::{$bar['baz']}()
- PHP7-Interpetation:
Foo::{$bar}['baz']()