обзор
В 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']()