【发布时间】:2017-09-14 03:13:17
【问题描述】:
我在我的框架中使用 Yii2,因为我喜欢 ActiveRecord 和 QueryBuilder。 Yii2 Official docs 描述如何使用它。
它可以工作,但是 Yii2 可以控制 ErrorHandler.php 中的 PHP 异常和警告
/**
* Register this error handler
*/
public function register()
{
ini_set('display_errors', false);
set_exception_handler([$this, 'handleException']);
if (defined('HHVM_VERSION')) {
set_error_handler([$this, 'handleHhvmError']);
} else {
set_error_handler([$this, 'handleError']);
}
if ($this->memoryReserveSize > 0) {
$this->_memoryReserve = str_repeat('x', $this->memoryReserveSize);
}
register_shutdown_function([$this, 'handleFatalError']);
}
我不知道如何处理它。
例如,我有来自 Yii 的 DBException。如果我设置自己的set_exception_handler,它将包含非常差的异常信息:只有代码和消息。如果没有准备好的查询、查询参数等,调试起来会很困难。
如果我使用 Yii2 的异常处理程序 - 我必须用 Yii2 异常重写我的所有框架。那不好,我不太喜欢 Yii2 字母和异常模板。 Yii2 所需要的只是与 DB 合作。
您有什么想法可以解决这种情况吗?
【问题讨论】:
-
我认为您误解了它的工作方式。 Yii 异常不包含比默认 PHP 异常更多的信息,Yii 错误处理程序处理每个异常,因此您不必重写代码。 Yii 2 中的 SQL 查询由 profiler 记录。
-
我不太确定你想在这里实现什么。你想保留默认的 php 错误处理程序还是什么?
标签: php activerecord yii exception-handling yii2