TypePHP 编译器 https://swoole.com/aot/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

37 lines
766 B

--TEST--
Symfony pattern: conditional first-class callable stored in property
--FILE--
<?php
class DeferredCallback
{
private mixed $callback = null;
public function set(?callable $callback): void
{
$this->callback = null !== $callback ? $callback(...) : null;
}
public function run(string $value): ?string
{
if (null === $callback = $this->callback) {
return null;
}
return $callback($value);
}
}
function main(): void
{
$callback = new DeferredCallback();
$callback->set(static fn (string $value): string => strtoupper($value));
var_dump($callback->run('symfony'));
$callback->set(null);
var_dump($callback->run('symfony'));
}
?>
--EXPECT--
string(7) "SYMFONY"
NULL