webfiori / err
一个用于更好地处理PHP错误和异常的库。
v1.1.0
2024-06-26 21:03 UTC
Requires
- php: >=7.0
README
一个用于更好地处理PHP错误和异常的库。
支持的PHP版本
安装
可以通过在您的 composer.json
文件的 require
部分包含以下条目将库包含到您的项目中:"webfiori/err":"*"
。
功能
- 将所有PHP错误转换为异常。
- 能够创建自定义的异常处理器。
- 为
set_exception_handler()
函数提供面向对象抽象。
使用方法
库中有两个主要的类,开发者将与之交互。第一个是 Handler
类,第二个是 AbstractExceptionHandler
类。第一个类是库的核心,用于设置自定义异常处理器。第二个类用于实现自定义异常处理器。由于库将所有PHP错误转换为异常,因此开发者无需设置自定义错误处理器。
实现自定义异常处理器
设置自定义异常处理器的第一步是实现它。实现自定义处理器是一个简单的过程。开发者只需扩展 AbstractExceptionHandler
类并实现其中一个抽象方法。方法 AbstractExceptionHandler::handle()
用于处理异常。开发者可以访问抛出的异常的属性,以便正确处理它。库中提供了一个默认的异常处理器,可以作为实现自定义处理器的良好示例。
<?php namespace webfiori\error; class DefaultExceptionsHandler extends AbstractExceptionHandler { public function __construct() { parent::__construct(); //Set handler name. Each registered handler must have a unique name. $this->setName('Cool Handler'); //Sets the priority of the handler. Larger means that it has higher priority. $this->setPriority(100); } /** * Handles the exception. */ public function handle() { echo '<pre>'; echo 'An exception was thrown at '.$this->getClass().' line '.$this->getLine().'.<br>'; echo 'Exception message: '.$this->getMessage().'.<br>'; echo 'Stack trace:<br>'; $trace = $this->getTrace(); if (count($trace) == 0) { echo '<Empty>'; } else { $index = '0'; foreach ($trace as $entry) { echo '#'.$index.' '.$entry.'<br>'; $index++; } } echo '</pre>'; } public function isActive(): bool { //Activate or deactivate the handler based on conditions. return true; } public function isShutdownHandler(): bool { //Set the handler as shutdown handler (errors after processing) return false; } }
设置自定义异常处理器
实现处理器后,开发者必须将其设置为异常处理器。要做到这一点,开发者只需在其项目中任何位置使用静态方法 Handler::registerHandler()
。
Handler::registerHandler(new DefaultExceptionsHandler());