Przegląd
W PHP możesz po prostu wstawić dodatkowy $
przed zmienną, aby stała się zmienną dynamiczną:
$$variableName = $value;
Chociaż nie poleciłbym tego, możesz nawet połączyć to zachowanie:
$$$$$$$$DoNotTryThisAtHomeKids = $value;
Możesz, ale nie musisz stawiać $variableName
między {}
:
${$variableName} = $value;
Używanie {}
jest obowiązkowe tylko wtedy, gdy sama nazwa zmiennej jest złożona z wielu wartości, takich jak:
${$variableNamePart1 . $variableNamePart2} = $value;
Niemniej jednak zaleca się zawsze używać {}
, ponieważ jest bardziej czytelny.
Różnice między PHP5 a PHP7
Innym powodem, dla którego należy zawsze używać {}
, jest to, że PHP5 i PHP7 mają nieco inny sposób radzenia sobie ze zmiennymi dynamicznymi, co w niektórych przypadkach skutkuje innym wynikiem.
W PHP7 zmienne dynamiczne, właściwości i metody będą teraz oceniane ściśle w kolejności od lewej do prawej, w przeciwieństwie do mieszanki specjalnych przypadków w PHP5. Poniższe przykłady pokazują, jak zmieniła się kolejność oceny.
Przypadek 1 : $$foo['bar']['baz']
- Interpretacja PHP5:
${$foo['bar']['baz']}
- Interpretacja PHP7:
${$foo}['bar']['baz']
Przypadek 2: $foo->$bar['baz']
- Interpretacja PHP5:
$foo->{$bar['baz']}
- Interpretacja PHP7:
$foo->{$bar}['baz']
Przypadek 3: $foo->$bar['baz']()
- Interpretacja PHP5:
$foo->{$bar['baz']}()
- Interpretacja PHP7:
$foo->{$bar}['baz']()
Przypadek 4: Foo::$bar['baz']()
- Interpretacja PHP5:
Foo::{$bar['baz']}()
- Interpretacja PHP7:
Foo::{$bar}['baz']()