Огляд
У PHP ви можете просто поставити додаткову $
перед змінною, щоб зробити її динамічною змінною:
$$variableName = $value;
Хоча я б не рекомендував це, ви навіть можете зв'язати цю поведінку:
$$$$$$$$DoNotTryThisAtHomeKids = $value;
Ви можете, але не змушені ставити $variableName
між {}
:
${$variableName} = $value;
Використання {}
є обов'язковим лише тоді, коли назва вашої змінної є складом декількох значень, як це:
${$variableNamePart1 . $variableNamePart2} = $value;
Тим не менш, рекомендується завжди використовувати {}
, тому що це читабельніше.
Відмінності між PHP5 та PHP7
Іншою причиною завжди користуватися {}
є те, що PHP5 та PHP7 мають дещо інший спосіб поводження з динамічними змінними, що призводить до різного результату в деяких випадках.
У PHP7 динамічні змінні, властивості та методи тепер оцінюватимуться строго у порядку зліва направо, на відміну від поєднання спеціальних випадків у PHP5. Наведені нижче приклади показують, як змінився порядок оцінювання.
Випадок 1: $$foo['bar']['baz']
- Взаємодія PHP5:
${$foo['bar']['baz']}
- Взаємодія PHP7:
${$foo}['bar']['baz']
Випадок 2: $foo->$bar['baz']
- Взаємодія PHP5:
$foo->{$bar['baz']}
- Взаємодія PHP7:
$foo->{$bar}['baz']
Випадок 3: $foo->$bar['baz']()
- Взаємодія PHP5:
$foo->{$bar['baz']}()
- Взаємодія PHP7:
$foo->{$bar}['baz']()
Випадок 4: Foo::$bar['baz']()
- Взаємодія PHP5:
Foo::{$bar['baz']}()
- Взаємодія PHP7:
Foo::{$bar}['baz']()