register_shutdown_function 使用及注意事项
该文章根据 CC-BY-4.0 协议发表,转载请遵循该协议。
本文地址:https://fenying.net/post/2014/09/28/usage-of-register_shutdown_function-in-php/
PHP 中的 register_shutdown_function 函数可以用来注册一个“在脚本结束时运行的函数”。
用法很简单:
1<?php
2
3register_shutdown_function('goodbye');
4
5function goodbye() {
6 echo 'goodbye';
7}
8
9# output: goodbye
可以用对象方法:
1<?php
2class A {
3 public k() {
4 echo __METHOD__;
5 }
6}
7
8$a = new A;
9register_shutdown_function([$a, 'k']);
10
11# output: A::k
可以用 PHP 5.3 开始支持的 Lambda 表达式:
1<?php
2
3register_shutdown_function(function() {
4 echo 'goodbye';
5});
6
7
8# output: goodbye
用 PHP 5.3 开始支持的类 __invoke 魔法方法:
1<?php
2
3class A {
4 public function __invoke() {
5 echo 'goodbye~';
6 }
7}
8
9$a = new A;
10register_shutdown_function($a);
11
12# output: goodbye
但是要注意的是:
- 当程序由于 exit 和未处理的异常、错误结束时,不会触发该函数。
- 可以多次调用该函数注册多个退出函数,执行顺序与注册顺序一致
comments powered by Disqus