PHP VERSION: 8.2.17
uniform_variable_syntax_expression_meaning_changes_4.php
<?php
// expression meaning changes
/*
// old meaning // new meaning
1: $$foo['bar']['baz'] ${$foo['bar']['baz']} ($$foo)['bar']['baz']
2: $foo->$bar['baz'] $foo->{$bar['baz']} ($foo->$bar)['baz']
3: $foo->$bar['bat']() $foo->{$bar['bat']}() ($foo->$bar)['bat']()
4: Foo::$bar['ban']() Foo::{$bar['ban']}() (Foo::$bar)['ban']()
*/
function calledInPhp7()
{
return 'Works in PHP7';
}
class Foo
{
public static $bar = ['ban' => 'calledInPhp7'];
public static function calledInPhp5()
{
return 'Works in PHP5';
}
}
$foo = new Foo();
$bar = ['ban' => 'calledInPhp5'];
echo Foo::$bar['ban']();
Output
Works in PHP7
SOURCE CODE