<?php
$great = 'abc';
${'great '} = 'def';
const great = 'ghi';
$ghi = '...';
${"ෝ"} = 'Meh'; // ${\u{ddd}} = 'Meh';
var_dump("${great }"); // outputs the constant value's variable value
var_dump("${'great '}"); // outputs the ${'great '} variable value
var_dump("${great}"); // outputs the $great variable value
var_dump("${'ෝ'}"); // outputs the ${\u{ddd}} variable value
var_dump("${ෝ}"); // outputs the ${\u{ddd}} variable value
/*
Even though "great " is not a valid variable name, neither is "\u{ddd}"
but that still works. I'd therefore expect "${great }" to firstly
search for a variable named "great " before falling back to evaluating
the expression first.
*/
Deprecated: Using ${expr} (variable variables) in strings is deprecated, use {${expr}} instead in /in/fC2vh on line 9
Deprecated: Using ${expr} (variable variables) in strings is deprecated, use {${expr}} instead in /in/fC2vh on line 10
Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /in/fC2vh on line 11
Deprecated: Using ${expr} (variable variables) in strings is deprecated, use {${expr}} instead in /in/fC2vh on line 12
Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /in/fC2vh on line 13
string(3) "..."
string(3) "def"
string(3) "abc"
string(3) "Meh"
string(3) "Meh"
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Deprecated: Using ${expr} (variable variables) in strings is deprecated, use {${expr}} instead in /in/fC2vh on line 9
Deprecated: Using ${expr} (variable variables) in strings is deprecated, use {${expr}} instead in /in/fC2vh on line 10
Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /in/fC2vh on line 11
Deprecated: Using ${expr} (variable variables) in strings is deprecated, use {${expr}} instead in /in/fC2vh on line 12
Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /in/fC2vh on line 13
string(3) "..."
string(3) "def"
string(3) "abc"
string(3) "Meh"
string(3) "Meh"