[PHP Whoops] 错误&异常 诊断组件

file

【Whoops 简介】:开发环境中需要显示错误,但是PHP默认显示的错误消息很难看,而且经常穿插在PHP脚本的输出里,难以阅读。然而 Whoops 可以改变这种情况,Whoops 是个现代的PHP组件,为PHP错误和异常提供了设计精美且易于阅读的诊断页面。

【多种格式】:Whoops 的强大还在于它能提供多种类型的错误输出:文本,JSON,XML 等一共5种格式类型

【Packagist】:https://packagist.org/packages/filp/whoops

【GitHub】:https://github.com/filp/whoops

【安装】:默认使用 Composer 进行安装,若不会使用 Composer 请参考“【PHP Composer】安装&使用“

composer require filp/whoops

【使用】:使用 Whoops 十分地简单,只需将下列代码放到引导文件中即可,这也是最重要的一点:想要捕获所有的错误和异常就必须在程序的开头就注册组件,这样即使是再复杂的框架也能捕获到具体的错误信息以及位置

$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();

【示例】:在这个示例中我们先注册 Whoops 组件,然后故意将代码写错,目的是为了演示 Whoops 的诊断页面

<?php
# @ Composer 自动加载器
require 'vendor/autoload.php';
# @ Whoops 组件
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();
# @ PHPexcel 函数类调用
if( $_POST['EXCEL'] )
{
    $objPHPExcel = APHPExcel_IOFactory::load($_POST['EXCEL']);
    $sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
    # @ 输出结果
    var_dump($sheetData);
}
?>

【输出】:

【其它格式】:如同上文所说 Whoops 还支持许多其它格式的错误输出

# @ 默认诊断页面
PrettyPageHandler
# @ 纯本文信息
PlainTextHandler
# @ 错误回调
CallbackHandler
# @ JSON 输出
JsonResponseHandler
# @ XML 输出
XmlResponseHandler

【其它示例】:这里简单演示下 JSON & XML 格式的错误输出

【JSON】:

# @ JSON 格式
$whoops->pushHandler(new \Whoops\Handler\JsonResponseHandler);
# @ JSON ERROR
{"error":{"type":"Whoops\\Exception\\ErrorException","message":"Class 'APHPExcel_IOFactory' not found","file":"D:\\wamp\\www\\Excel\\DealExcel.php","line":12}}

【XML】:

# @ XML 格式
$whoops->pushHandler(new \Whoops\Handler\XmlResponseHandler);
# @ XML ERROR


【Tips】:欢迎有兴趣一起学习进步的朋友添加我的印象笔记账号:note1071.38f6955@m.yinxiang.com,或者将你的印象笔记账号发至我的邮箱:ms.work.note.dev@outlook.com

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由 Summer 于 6年前 加精
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2
Summer

头图分辨率太差,冒昧地给你换了一张

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!