Fenying

Angus’ Home.


28 Sep 2014

register_shutdown_function 使用及注意事项

该文章迁移自作者的旧博客站点。
源地址:http://fenying.blog.163.com/blog/static/10205599320148288433799/

PHP 中的 register_shutdown_function 函数可以用来注册一个“在脚本结束时运行的函数”。

用法很简单:

<?php

register_shutdown_function('goodbye');

function goodbye() {
    echo 'goodbye';
}

# output: goodbye

可以用对象方法:

<?php
class A {
    public k() {
        echo __METHOD__;
    }
}

$a = new A;
register_shutdown_function([$a, 'k']);

# output: A::k

可以用 PHP 5.3 开始支持的 Lambda 表达式:

<?php

register_shutdown_function(function() {
    echo 'goodbye';
});


# output: goodbye

用 PHP 5.3 开始支持的类 __invoke 魔法方法:

<?php

class A {
    public function __invoke() {
        echo 'goodbye~';
    }
}

$a = new A;
register_shutdown_function($a);

# output: goodbye

但是要注意的是:

  1. 当程序由于 exit 和未处理的异常、错误结束时,不会触发该函数。
  2. 可以多次调用该函数注册多个退出函数,执行顺序与注册顺序一致
该文章根据 CC-BY-4.0 协议发表,转载请遵循该协议。
本文地址:https://fenying.net/post/2014/09/28/usage-of-register_shutdown_function-in-php/

comments powered by Disqus