关于php的 register_shutdown_function 和 error_get_last函数

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

返回值: 整数

函数种类: PHP 系统功能

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


function demo() {
	echo '我执行了~';
}
register_shutdown_function("demo");

$a = 1;
$a = new Demo();//这里出错,下面内容无法执行输出。
echo '看看出错说什么~';

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

function demo() {
	echo '我执行了~';
}
register_shutdown_function("demo");

$a = 1;
echo '看看出错说什么~';
执行结果是:看看出错说什么~ 我执行了~


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

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

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


function demo() {
	$error = error_get_last();
	if (in_array($error['type'],array(E_ERROR,E_WARNING))) {//把你需要记录的错误类型修改下就行
		//这里可以调用你写的Log类或者方法记录错误信息。 也可以使用xhprof扩展什么的
		echo '我执行了~';
		var_dump($error);
	}
}
register_shutdown_function("demo");

$a = 1;
$a = new Demo();
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手册也许会有意想不到的收获。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值