sageit / phalcon-exception-handler

Sage IT 组件用于 Phalcon - 标注路由的解析器

v1.03 2023-01-03 21:44 UTC

This package is auto-updated.

Last update: 2024-09-30 01:54:30 UTC


README

Logo

Phalcon 异常处理器

Latest Stable Version Total Downloads License PHP Version Require Phalcon Version

添加预设的可抛出异常以及内置的处理器和日志记录功能。

探索文档 »

报告错误 · 请求功能

目录


关于项目

构建


安装

Git

git clone https://github.com/SageITSolutions/phalcon-exception-handler.git

Composer

composer require sageit/phalcon-exception-handler

使用

此项目包含一个内置的异常处理器,该处理器支持完整的 Phalcon 应用程序和微应用。目的是将日志和展示集成到通用异常中。

这不应该代替 Phalcon\Support\Debug 功能。异常处理器旨在处理已知事件的生产环境中的异常。

全应用

new Phalcon\Exception\Handler(true,'Error');

此操作将实例化一个新的异常处理器,并将其作为全局的异常处理器设置(true)。'Error' 可以被任何用于显示异常的闪存服务使用的 CSS 类替换。

如果存在 Logger,并且日志级别大于或等于异常中定义的 LOG_LEVEL,则将根据指定的级别记录事件。这有助于审计失败的认证尝试。

如果存在 Flash,则当抛出异常时将显示闪存警告。不包含在此库中的异常将自动转换为通用的“未知异常”。

如果没有 Flash,则将返回一个简单的 echo,内容为“遇到异常:{错误信息}”。

微应用

在微类中添加以下内容

$this->error(function ($exception) {
  $handler = new \Phalcon\Exception\Handler(false);
  $this
    ->response
    ->setStatusCode($code)
    ->setJsonContent($handler->getJSON($exception))
    ->send();
  die;
});

如果存在依赖注入中的 Logger 服务,则全应用的全局日志行为将发生。

自定义异常

您不仅限于提供的异常。任何自定义异常都可以通过扩展 \Phalcon\Exception\Exception 创建。

class MyCustomException extends Phalcon\Exception\Exception {
    protected const ERROR_MESSAGE = 'I\'ve created a new custom Exceptions #reasons';
    protected const ERROR_CODE    = 401;
    protected const LOG_MESSAGE = 'My custom exception was activated';
    protected const LOG_LEVEL = 'alert';

LOG_LEVEL\Phalcon\Logger\Logger 使用的级别相对应。

日志级别

  1. 紧急
  2. 严重
  3. 警告
  4. 错误
  5. 警告
  6. 注意
  7. 信息
  8. 调试
  9. 自定义

其他方法

setDisplay

在抛出异常之前,可以更改闪存使用的 CSS 显示类,以便默认异常处理器应用正确的样式。

$handler->setDisplay('Notification');

display

如果没有全局错误捕获,并且需要使用具有自定义类的闪存显示服务,则可以直接调用此方法。

$handler->display($exception,'Notification');

提供的异常可以是任何可抛出的 \Exception。

log

如果需要记录异常而不显示它,可以直接调用此方法。如果没有存在 Logger 服务,则此方法将不执行任何操作。

$handler->log($exception,'Notification');

getJSON

_如微应用中所示,方法 getJSON 返回一个包含异常元素的命名数组。

$handler->getJSON($exception);

结果

[
  'code' => 500,  //$this->getCode()
  'status' => 'error',
  'message' => 'Exception Encountered' //$this->getMessage()
]

convertException

静态 方法在几个其他方法中调用,但也可以外部使用,以将通用异常转换为此处理器使用的 \Phalcon\Exception\Exception

\Phalcon\Exception\Handler::convertException($exception);

没有返回值,因为此操作作为变量引用完成。


路线图

查看开放问题以获取功能建议(以及已知问题)列表。


贡献

贡献使开源社区成为一个如此美妙的学习、灵感和创造之地。您所做的任何贡献都非常受欢迎

  1. 分支项目
  2. 创建您的功能分支(git checkout -b feature/AmazingFeature
  3. 提交您的更改(git commit -m '添加一些AmazingFeature'
  4. 将更改推送到分支(git push origin feature/AmazingFeature
  5. 发起一个Pull Request

许可证

在MIT许可下分发。有关更多信息,请参阅LICENSE


联系

Sage IT Solutions - 邮箱

项目链接:https://github.com/SageITSolutions/phalcon-exception-handler