brenno-duarte/modern-php-exception

以现代且直观的方式显示PHP错误和异常

3.3.6 2024-09-28 18:16 UTC

README

以现代且直观的方式显示PHP错误和异常!

要求

  • PHP >= 8.3
  • ext-mbstring
  • ext-pdo

通过Composer安装

使用以下命令

composer require brenno-duarte/modern-php-exception

如何使用

您只需要调用以下示例中的单个方法。

use ModernPHPException\ModernPHPException;

$exc = new ModernPHPException();
$exc->start();

从那里开始,所有触发的事件都将通过ModernPHPException组件显示出来。

您可以在类构造函数中更改返回值、标题和主题设置,如下所示。

YAML配置

您可以根据需要自定义异常标题、启用深色模式并启用生产模式。使用示例文件config.example.yaml或创建一个新的文件。

$config = __DIR__ . '/config.example.yaml';

$exc = new ModernPHPException($config);
$exc->start();

更改页面标题

title: My title

启用深色模式

# Default: false
dark_mode: true

启用生产模式

# Default: false
production_mode: true

要更改消息,请更改error_message变量

production_mode: true
error_message: Something wrong!

在没有互联网连接的情况下加载CSS文件

# Use `false` only if you have no internet connection
enable_cdn_assets: false

启用日志文件

enable_logs: false

# Default: sys_get_temp_dir() . "/ModernPHPExceptionLogs/ModernPHPExceptionLogs.log"
dir_logs: C:\wamp64\www\modern-php-exception\

启用发生次数

如果您希望记录应用程序显示的所有异常和错误的历史记录,您可以通过使用enableOccurrences方法启用发生次数

$config = __DIR__ . '/config.example.yaml';

$exc = new ModernPHPException($config);
$exc->enableOccurrences(); // <- Before `start` method
$exc->start();

别忘了在config.example.yaml文件中配置数据库。

# Database for Occurrences
db_drive: mysql
db_host: localhost
db_name: database_name
db_user: root
db_pass: pass

创建异常解决方案

如果您正在创建自定义异常类,您可以为此异常添加一个解决方案。

为此,请使用实现SolutionInterface接口的静态getSolution方法

<?php

namespace Test;

use ModernPHPException\Solution;
use ModernPHPException\Interface\SolutionInterface;

class CustomException extends \Exception implements SolutionInterface
{
    public function getSolution(): Solution
    {
        return Solution::createSolution('My Solution')
            ->setDescription('description')
            ->setDocs('https://google.com');
    }

    #...
  • createSolution: 修复异常的解决方案名称
  • setDescription: 异常解决方案的详细描述
  • setDocs: 如果存在文档,此方法将显示一个按钮。默认情况下,按钮的名称将是Read More,但您可以通过更改方法的第二个参数来更改名称

您可以使用新类进行测试

public static function staticCall()
{
    throw new CustomException("Error Processing Request");
}

函数

Modern PHP Exceptions有一些函数可以帮助您调试代码。可用函数包括

  • 一个简单的函数,可以拉取调试回溯的所有详细信息。
get_debug_backtrace()
  • 一个函数,返回var_dump()的值而不是输出它。
echo var_dump_buffer()
  • 基于XDebug样式的PHP函数,用于替换var_dump()和print_r()。
var_dump_debug()

在终端中,您可以使用文档块标志简单地在某些对象属性上隐藏或显示。

/**
* @dumpignore-inheritance
* @dumpignore-inherited-class
* @dumpignore-private
* @dumpignore-public
* @dumpignore-public
*/
Class Foo extends Bar {
    /** @dumpignore */
    private ?BigObject $foo = null;
}
  • 转储PHP值并终止脚本。此函数使用var_dump_debug
dump_die()
  • 查看PHP闭包的源代码
closure_dump()

记录器

如果您想将日志记录到文件中,您可以使用Debug类。要记录日志,请使用log方法。

use ModernPHPException\Debug;

Debug::log($message, $log_file);

您可以将方法调用的文件和行注册。

use ModernPHPException\Debug;

Debug::log($message, $log_file, __FILE, __LINE__);

要检索记录在文件中的日志,请使用get方法。

use ModernPHPException\Debug;

Debug::get($log_file);

测试

如果您想测试组件,请在您的index.php中使用以下代码。

<?php

require 'vendor/autoload.php';

use ModernPHPException\ModernPHPException;

$exc = new ModernPHPException();
$exc->start();

throw new Exception("Error Test", 1);

$a = new FakeClass();

许可

MIT