关于php的 register_shutdown_function 和 error_get_last函数

void register_shutdown_function ( callable $callback [, mixed $parameter [, mixed $... ]] )

返回值: 整数

函数种类: PHP 系统功能

本函数向系统定义 PHP 程序 (Script) 执行结束之后所要执行的函数。当执行该指定的函数时,由于无法看到返回值,因此调试较困难。


  1. function demo() {  
  2.     echo '我执行了~';  
  3. }  
  4. register_shutdown_function("demo");  
  5.   
  6. $a = 1;  
  7. $a = new Demo();//这里出错,下面内容无法执行输出。  
  8. echo '看看出错说什么~';  

结果是 xdebug 提示错误信息,然后下面输出 “我执行了~”.

  1. function demo() {  
  2.     echo '我执行了~';  
  3. }  
  4. register_shutdown_function("demo");  
  5.   
  6. $a = 1;  
  7. echo '看看出错说什么~';  
执行结果是:看看出错说什么~ 我执行了~


so,这个函数不管是程序执行完毕还是程序执行出错,最后总是会回调我们写的demo函数。

好了,我们可以利用这个特性写一个专门记录程序执行错误、记录日志的函数。

只需要在回调函数demo中加个判断就OK了~


  1. function demo() {  
  2.     $error = error_get_last();  
  3.     if (in_array($error['type'],array(E_ERROR,E_WARNING))) {//把你需要记录的错误类型修改下就行  
  4.         //这里可以调用你写的Log类或者方法记录错误信息。 也可以使用xhprof扩展什么的  
  5.         echo '我执行了~';  
  6.         var_dump($error);  
  7.     }  
  8. }  
  9. register_shutdown_function("demo");  
  10.   
  11. $a = 1;  
  12. $a = new Demo();  
  13. echo '看看出错说什么~';  

输出结果:

xdebug 提示的错误信息....

我执行了~

array (size=4)
  'type' => int 1
  'message' => string 'Class 'Demo' not found' (length=22)
  'file' => string 'D:\wamp\www\testmysql.php' (length=25)
  'line' => int 13


就是这么简单~ 保证你需要记录的错误信息都能被记录下来,然后记录完错误信息,给用户发个友好的错误提示,用户体验也就有了。

关于  error_get_last()函数 :

error_get_last() 函数获取最后发生的错误。
该函数以数组的形式返回最后发生的错误。
返回的数组包含 4 个键和值:
[type] - 错误类型
[message] - 错误消息
[file] - 发生错误所在的文件
[line] - 发生错误所在的行


综上所述,有些函数还是挺重要的。只不过我们平时没看到、没注意到而已。 多看php手册也许会有意想不到的收获。

当然,读项目代码有时候也能发现亮点~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值