PHP VERSION: 8.2.17

uniform_variable_syntax_dereferencing_return_array_callable.php

<?php 
// callable returns an array ... can dereference any element immediately
// if return array itself has a callable, can execute immediately

class Foo
{
    const 
FOO_FORMAT 'Y-m-d H:i:s'
    public function 
baz()
    {
        return [
            
=> function () { return 'TEST1'; },
            
=> function () { return 'TEST2'; }
        ];
    }
    public function 
bar()
    {
        return function () {
            
$a = [=> function () { return 'TEST1'; },
                  
=> function () { return 'TEST2'; }
            ];
            return 
$a;
        };
    }
}

$foo = new Foo();
echo 
$foo->baz()[0]();
echo 
PHP_EOL;
echo 
$foo->bar()()[1]();

Output


TEST1
TEST2
SOURCE CODE