microparts/errors-php

此包已废弃,不再维护。未建议替代包。

为任何Web应用处理异常的复杂解决方案。

1.0.1 2019-05-02 23:04 UTC

This package is auto-updated.

Last update: 2020-07-19 06:45:21 UTC


README

Errors PHP包

CircleCI codecov

为任何Web应用处理异常的复杂解决方案。兼容PSR-3(记录器)和PSR-7(http消息)建议。

主要功能

  • 框架无关(可以集成到任何PHP Web应用);
  • 您可以为HTTP响应定义自定义验证和错误格式;
  • 您可以为错误定义自定义处理程序;
  • 您可以将错误消息(调试输出)发送到任何服务(sentry、bugsnag)、经典记录器或同时使用两者;
  • 您可以从异常消息中替换敏感数据(如PDOException中的SQL查询);
  • 您可以将异常标记为“静默”,则不会将其报告给通知通道;
  • 100%测试覆盖率 :)

安装

像往常一样,通过composer安装

composer require microparts/errors-php

使用方法

库不处理全局错误。因此,它需要您在应用程序服务提供程序中进行配置才能为您工作。

示例如何实现

// Simple example for most cases
use Microparts\Errors\Error;

$error = Error::new($debug = true); // debug parameter add exception trace to http error response.

默认情况下,将注册 PDOException 作为“掩码”,其异常消息将被替换为“数据库错误发生。请查看日志以获取详细信息”。此外,默认的 ValidationException 将注册为“静默”,以跳过有关用户错误的通知。

第二步是在您的应用程序处理错误的代码中捕获异常

use Microparts\Errors\Error;

$error = Error::new($debug = true);

try {
    throw new PDOException('test');
} catch (Throwable $e) {
    return $error->capture($e); // return PSR ResponseInterface
}

方法 capture 返回一个PSR ResponseInterface,带有格式化的响应,以将其提供给用户。

高级使用

当然是在引号中使用“硬”

Error 对象可以配置为所需的内容。示例

// Simple example for most cases
use Microparts\Errors\Error;
use Microparts\Errors\Notify\LoggerNotify;
use Microparts\Errors\Notify\SentryNotify;
use Microparts\Logger\Logger;
use Microparts\Errors\Formatter\DefaultErrorFormatter;
use Microparts\Errors\Handler\DefaultErrorHandler;

$error = new Error($debug = false);
$error->setFormatter(new DefaultErrorFormatter($debug));
$error->setHandler(new DefaultErrorHandler());
$error->addSilentException(LogicException::class); // logic is not a need thing 
$error->addDatabaseException(RedisException::class);
// Logger PSR compatible.
// If you want use my pretty logger, just run command: 
// composer require microparts/logs-php
$error->addNotifier(new LoggerNotify(Logger::new()));
$error->addNotifier(new SentryNotify(['dsn' => $dsn]));

就这样。用❤使用。

Sentry & 通知双通道

Sentry集成可用。通过composer安装sentry SDK

composer require sentry/sdk

...然后注册新的通知器

use Microparts\Errors\Error;
use Microparts\Errors\Notify\LoggerNotify;
use Microparts\Errors\Notify\SentryNotify;
use Microparts\Logger\Logger;

$error = Error::new();
$error->addNotifier(new LoggerNotify(Logger::new()));
$error->addNotifier(new SentryNotify(['dsn' => $dsn]));

两个通知将一起工作,并发送通知到两个通道。现在您应该在try/catch块中捕获异常。

测试

  • 100%测试覆盖率
  • vendor/bin/phpunit

许可

MIT许可证

版权所有 © 2019 teamc.io,Inc. https://teamc.io

特此授予任何获取此软件及其相关文档文件(“软件”)副本的人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向提供软件的人提供使用该软件的权利,但须遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任源于合同、侵权或其他原因,以及与软件本身、使用或与软件相关的其他方式产生的责任。