- assert: documentation ( source)
- var_dump: documentation ( source)
<?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);