当前位置:首页 > PHP > 正文内容

为php定制漂亮的错误提示

高老师6年前 (2020-11-04)PHP1582

关于PHP的烦恼之一是它引发的错误消息过于简洁。并不是说完全没用;最让人头疼的是,必须在给定的错误位置打开源文件来检查问题。此外,也不容易获得完整的系统上下文,例如(PHP系统变量,cookie,会话等)。

Whoops是一个不错的错误提示库,它通过帮助您以用户友好的方式处理错误和异常来帮助您更好地开发和维护PHP项目。Whoops已经是Laravel 4的一部分,放心用起来。

看看下面这个错误代码:

$planets = array();
echo $planets[0];

执行将输出:

Notice: Undefined offset: 0 in D:\localhost\projects\test\test.php on line 27

使用了Whoops实际的错误页面包含的信息比此处提供的信息还要多-比如会话变量,Cookie,HTTP标头等。

通过composer安装Whoops

{
    "require": {
        "filp/whoops": "*"
    }
}

在项目中使用

$run     = new \Whoops\Run;
$handler = new \Whoops\Handler\PrettyPageHandler;
$JsonHandler = new \Whoops\Handler\JsonResponseHandler;

$run--->pushHandler($JsonHandler);
$run->pushHandler($handler);
$run->register();

/* Sample code that throws an error */

$planets = array();
echo $planets[0];

执行即可看到效果

另外我们还可以自定义信息

$run     = new \Whoops\Run;
$handler = new \Whoops\Handler\PrettyPageHandler;
$JsonHandler = new \Whoops\Handler\JsonResponseHandler;

/* 设置页面标题 */
$handler->setPageTitle("Oops, Error encountered!");

/* 其他信息设置 */
$handler->addDataTable("Extra Slice of Info", array(
      "page-id"     => 173,
      "page-name"   => "foo-bar",
      "app-name"    => "fb"
));

$run->pushHandler($handler);
$run->register();

更多的玩法参考文档官方文档

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/186.html

分享给朋友:

“为php定制漂亮的错误提示” 的相关文章

php 获取当前执行文件,php 获取当前执行文件,php 获取当前文件

php 获取当前执行文件,php 获取当前执行文件,php 获取当前文件

php官方的超全局变量$_SERVER['PHP_SELF']也能直接获取,只不过如果url参数太多也会获取。下面提供一个方法获取/*  * 获取当前PHP文件名称  */ if (!function_exists('phpself&#...

全方位认识PHP的SESSION

全方位认识PHP的SESSION

【一】.介绍session由于HTTP是无状态的请求,创建一个会话需要保持必须需要身份标识。当用户第一次访问,PHP会为用户创建一个唯一的sessionid,并将sessionid通过cookie发送给浏览器,并在服务器的临时文件创建一个以sessionid为名的文件用来保存这个sessionid保...

【二】PHP多进程学习-进程信号管理

【二】PHP多进程学习-进程信号管理

(1).学习目标:    了解常见信号类型(百度PHP支持的信号类型),(2).相关函数学习:    (2.1).pcntl_signal函数用于设置一个信号管理器接收进程信号,参数1:信号类型,参数2:回调函数,用于在接收到参数1类型的信...

php  while  true  cpu占用100%

php while true cpu占用100%

在编写多进程的实例中我在每个进程中使用如下代码://调用等待信号的处理器 while (true) {     pcntl_signal_dispatch(); }开启5个进程,cpu直接100%修正之后的代码://调用等待信号的处理器 while&...

 php命令行中文乱码,php cli中文乱码

php命令行中文乱码,php cli中文乱码

<?php //如果支持exec函数,可以使用的方式 exec('chcp 65001'); //如果exec函数因安全问题禁用,可以使用的方式 pclose(popen('chcp 65001', 'r'));...

windows安装php event扩展问题

windows安装php event扩展问题

php event扩展在windows中依赖于php_sockets扩展,因此在php.ini中必须先加载php sockets扩展,如下。extension=sockets extension=event...