Panoramica
In PHP, puoi semplicemente mettere un extra $
davanti a una variabile per renderla una variabile dinamica:
$$variableName = $value;
Anche se non lo consiglierei, potresti persino concatenare questo comportamento:
$$$$$$$$DoNotTryThisAtHomeKids = $value;
Puoi ma non sei costretto a mettere $variableName
tra {}
:
${$variableName} = $value;
L'uso {}
è obbligatorio solo quando il nome della variabile è esso stesso una composizione di più valori, come questo:
${$variableNamePart1 . $variableNamePart2} = $value;
Si consiglia comunque di utilizzare sempre {}
, perché è più leggibile.
Differenze tra PHP5 e PHP7
Un altro motivo da usare sempre {}
è che PHP5 e PHP7 hanno un modo leggermente diverso di gestire le variabili dinamiche, il che si traduce in un risultato diverso in alcuni casi.
In PHP7, le variabili dinamiche, le proprietà e i metodi saranno ora valutati rigorosamente nell'ordine da sinistra a destra, al contrario del mix di casi speciali in PHP5. Gli esempi seguenti mostrano come è cambiato l'ordine di valutazione.
Caso 1 : $$foo['bar']['baz']
- Interpetazione PHP5:
${$foo['bar']['baz']}
- Interpetazione PHP7:
${$foo}['bar']['baz']
Caso 2: $foo->$bar['baz']
- Interpetazione PHP5:
$foo->{$bar['baz']}
- Interpetazione PHP7:
$foo->{$bar}['baz']
Caso 3: $foo->$bar['baz']()
- Interpetazione PHP5:
$foo->{$bar['baz']}()
- Interpetazione PHP7:
$foo->{$bar}['baz']()
Caso 4: Foo::$bar['baz']()
- Interpetazione PHP5:
Foo::{$bar['baz']}()
- Interpetazione PHP7:
Foo::{$bar}['baz']()