怎么在PHP中使用register_shutdown_function函数

  介绍

今天就跟大家聊聊有关怎么在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函数