介绍
今天就跟大家聊聊有关怎么在PHP中使用register_shutdown_function函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
<强> 1。函数说明强>
定义:该函数是来注册一个会在PHP中止时执行的函数
参数说明:
void register_shutdown_function (, callable callback 美元;[,mixed parameter 美元;[,mixed ……,美元]],)
注册一个回调函数,它会在脚本执行完成或者退出()后被调用。
回调:待注册的中止回调
参数:可以通过传入额外的参数来将参数传给中止函数
<强> 2。PHP中止的情况强>
PHP中止的情况有三种:
- <李>
执行完成
李> <李>退出/模导致的中止
李> <李>发生致命错误中止
李>。第一种情况,执行完成
& lt; ? php function 测试(), {, ,echo & # 39;这个是中止方法测试的输出& # 39;,, }, , register_shutdown_function(& # 39;测试# 39;),, , echo & # 39;之前# 39;,只PHP_EOL;
运行:
before 这个是中止方法测试的输出
<强>注意:>强输出的顺序,等执行完成了之后才会去执行register_shutdown_function的中止方法测试
b。第二种情况,退出/模导致的中止
& lt; ? php function 测试(), {, ,echo & # 39;这个是中止方法测试的输出& # 39;,, }, , register_shutdown_function(& # 39;测试# 39;),, , echo & # 39;之前# 39;,只PHP_EOL;, 退出(),, echo & # 39;后# 39;,只PHP_EOL;
运行:
before 这个是中止方法测试的输出
后面后的并没有输出,即退出或者是死方法导致提前中止。
c。第三种情况,发送致命错误中止
& lt; ? php function 测试(), {, ,echo & # 39;这个是中止方法测试的输出& # 39;,, }, , register_shutdown_function(& # 39;测试# 39;),, , echo & # 39;之前# 39;,只PHP_EOL;, ,//,这里会发生致命错误, $ a =, new (),, , echo & # 39;后# 39;,只PHP_EOL;
运行:
before , 错误:Fatal Uncaught 错误:,Class & # 39;一个# 39;,not found 拷贝D: \ laragon \ www \ php_book \ test.php 提醒line 12, , 错误:,Class & # 39;一个# 39;,not found 拷贝D: \ laragon \ www \ php_book \ test.php 提醒line 12, , Call 堆栈: ,0.0020,360760,1只{主要}(),D: \ laragon \ www \ php_book \ test.php: 0, , 这个是中止方法测试的输出
后面也后的是没有输出,致命错误导致提前中止了。
<强> 3。参数强>
第一个参数支持以数组的形式来调用类中的方法,第二个以及后面的参数都是可以当做额外的参数传给中止方法。
& lt; ? php , class Shutdown {, ,public function 停止(), {大敌; echo 才能;“这个是停止方法的输出,,, }大敌; }, ,//,当PHP终止的时候(执行完成或者是遇到致命错误中止的时候)会调用new 关闭的停止方法, register_shutdown_function ([new Shutdown(), & # 39;停止# 39;]),, ,//,将因为致命错误而中止, $ a =, new (),, ,//,这一句并没有执行,也没有输出, echo & # 39;必须终止& # 39;;
也可以在类中执行:
& lt; ? php , {class TestDemo ,public function  __construct (), {大敌; register_shutdown_function才能([这美元,,“f"],,“hello"),, }大敌; , 美元,public function f (str), {大敌; echo 才能“class  TestDemo→f():“,只str;美元, }大敌; }, , $ demo =, new TestDemo (),, echo & # 39;之前# 39;,只PHP_EOL;, ,/* *, 运行: before class TestDemo→f (): hello 之前,*/><强> 4。同时调用多个强>
可以多次调用register_shutdown_function,这些被注册的回调会按照他们注册时的顺序被依次调用。
怎么在PHP中使用register_shutdown_function函数