3v4l.org

run code in 300+ PHP versions simultaneously
<?php declare(strict_types = 1); /** * @template TReturn * @param Closure(): TReturn $closure * @param 'static'|class-string|object $newScope * @return Closure(): TReturn */ function bind(Closure $closure, string|object $newScope = 'static'): Closure { /** @var ?Closure(): TReturn */ $boundClosure = $closure->bindTo(null, $newScope); assert($boundClosure !== null, 'Failed to bind closure.'); return $boundClosure; } final class Vault { public function __construct( private readonly string $secret, ) { } } $vault = new Vault('https://disk.yandex.ru/i/OG-9MXrogsS05g'); $secretAccessor = bind(static fn (): string => $vault->secret, $vault); $secret = $secretAccessor(); var_dump($secret);

preferences:
25.66 ms | 405 KiB | 5 Q