PHP 7.4 Arrow Functions and their scopes

Code
<?php

// ############################ example 1 ###############################

// An arrow function example. A function that adds 1 to another integer
$function = fn(int $num) => 1 + $num;

echo $function(3) . PHP_EOL;

// ############################ example 2 ###############################

// Scope examples
class Bar
{
    public function doBar()
    {
        echo sprintf('execute %s%s', __METHOD__, PHP_EOL);
    }
}

class Foo
{
    public function getFunction()
    {
        $bar = new Bar();

        // Arrow function has access to $bar and $this, just like `function () use ($bar) {};`
        return fn() => $bar->doBar();
    }
}

$foo = new Foo();

$function = $foo->getFunction();

unset($foo);

// The instances previously in $bar and $foo still exists because of this arrow function.
$function();

// ############################ example 3 ###############################

class FooWithStatic
{
    public function getFunction()
    {
        $bar = new Bar();

        // Arrow function has access to $bar and $this, just like `function () use ($bar) {};`
        return static fn() => $bar->doBar();
    }
}

$fooWithStatic = new FooWithStatic();

$function = $fooWithStatic->getFunction();

unset($fooWithStatic);

// $this isn't in scope with the static arrow function, but $bar still exists.
// Be careful about objects that stay in memory because of how you use
// arrow functions.
$function();
Result
4
execute Bar::doBar
execute Bar::doBar
Used Versions
PHP 8.3, Laminas MVC 3.2, Symfony 5.2, Laravel 8.28, PHPUnit 9.5, Doctrine ORM 2.8