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 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3

不常住内存有个蛋用,一个请求里面先进和后进没啥实际意义

1年前 评论

厉害,原来defer是这么简单的原理

1年前 评论

${LINE}作用是啥?为什么必须要?

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!