我应该在 PHP8 中使用 trigger_error
Shoud I use trigger_error in PHP8
我正在修改一个 PHP 项目,由于对数据库进行了大规模重新设计,该项目是必需的。
因此,该项目应使用最新的 PHP 版本,在撰写本文时为版本 8。
我还在使用带命名空间的 OOP 方法,因此该项目将来可以从自动加载等功能中受益。
在我写的新 classes 中,我需要抛出错误。
但是在 PHP8 中,有很多方法可以做到这一点。
我可以使用 trigger_error 或异常或错误 class 及其特定变体,如值错误。
现在我不确定该选择哪个。
目前我在代码中混合了异常和 trigger_error。
我为异常和“旧”错误定义了一个自定义处理程序,它将错误写入日志文件,以便我可以修复它们(如果可能)。
那么我应该用什么来写一个面向未来的代码呢?
不幸的是,我在 PHP 文档中找不到任何关于此的内容。
不幸的是,我的网络研究也没有带来任何有用的结果。
有最佳方法规则吗?
我不是 PHP 专家。
然而,我的一点观察是最新的 PHP 版本往往更面向对象。 PHP 现在支持许多 OOP
功能,您可以在任何其他完全面向对象的语言(如 C# 或 Java 中找到这些功能。我们可以看到许多 PHP 函数现在抛出异常,并且随着 PHP 7 中的 Exception
和 Error
以及 PHP 中的 ValueError
的引入8 与臭名昭著的 false
和 null
.
相比,您可能会遇到并不得不处理异常
一个非常小的 PHP 功能列表现在抛出异常(旁边是版本):
- 内部 类 的构造函数现在将始终抛出异常 (PHP 7)
- 调用参数少于强制声明参数的函数会抛出异常(PHP 7.1)
1 + "a"
抛出 TypeError
(PHP 8)
explode
当分隔符参数为空时抛出 ValueError
字符串 (PHP 8)
mb_ord
当 $string 参数为空字符串时抛出 ValueError
(PHP 8)
MySQLi
默认错误处理模式已从“静默”更改为
“例外”(PHP 8.1)
还有更多会抛出 Error
或 exception
的实例,而不是导致致命错误。
结论
抛出异常而不是使用 trigger_error
。
我正在修改一个 PHP 项目,由于对数据库进行了大规模重新设计,该项目是必需的。 因此,该项目应使用最新的 PHP 版本,在撰写本文时为版本 8。 我还在使用带命名空间的 OOP 方法,因此该项目将来可以从自动加载等功能中受益。
在我写的新 classes 中,我需要抛出错误。 但是在 PHP8 中,有很多方法可以做到这一点。 我可以使用 trigger_error 或异常或错误 class 及其特定变体,如值错误。 现在我不确定该选择哪个。 目前我在代码中混合了异常和 trigger_error。
我为异常和“旧”错误定义了一个自定义处理程序,它将错误写入日志文件,以便我可以修复它们(如果可能)。
那么我应该用什么来写一个面向未来的代码呢? 不幸的是,我在 PHP 文档中找不到任何关于此的内容。 不幸的是,我的网络研究也没有带来任何有用的结果。 有最佳方法规则吗?
我不是 PHP 专家。
然而,我的一点观察是最新的 PHP 版本往往更面向对象。 PHP 现在支持许多 OOP
功能,您可以在任何其他完全面向对象的语言(如 C# 或 Java 中找到这些功能。我们可以看到许多 PHP 函数现在抛出异常,并且随着 PHP 7 中的 Exception
和 Error
以及 PHP 中的 ValueError
的引入8 与臭名昭著的 false
和 null
.
一个非常小的 PHP 功能列表现在抛出异常(旁边是版本):
- 内部 类 的构造函数现在将始终抛出异常 (PHP 7)
- 调用参数少于强制声明参数的函数会抛出异常(PHP 7.1)
1 + "a"
抛出TypeError
(PHP 8)explode
当分隔符参数为空时抛出ValueError
字符串 (PHP 8)mb_ord
当 $string 参数为空字符串时抛出ValueError
(PHP 8)MySQLi
默认错误处理模式已从“静默”更改为 “例外”(PHP 8.1)
还有更多会抛出 Error
或 exception
的实例,而不是导致致命错误。
结论
抛出异常而不是使用 trigger_error
。