php 实现golang defer延迟执行(先进后出)
<?php
echo '开始 <br />';
$num = '1 <br />';
${__LINE__} = defer(function () use ($num) {
echo $num;
});
echo ${__LINE__};
$num = '2 <br />';
${__LINE__} = defer(function () use ($num) {
echo $num;
});
$num = '3 <br />';
${__LINE__} = defer(function () use ($num) {
echo $num;
});
echo '结束 <br />';
function defer(callable $cb)
{
return new class($cb)
{
public function __construct($fn)
{
$this->fn = $fn;
}
public function __destruct()
{
($this->fn)();
}
};
}
输出
开始
结束
3
2
1
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: