为什么PHP';s”;trigger_error”;返回true


Why does PHP's "trigger_error" return true?

我为自定义函数使用错误处理,并注意到所有三种用户错误类型(notice、WARNING和error)都返回true

当函数处理不正确(例如插入无效数据)时,我使用trigger_error函数来转义该函数。我认为逃离该功能的最佳方法是使用:

return trigger_error('Error notice here');

问题是,错误返回true。虽然我的所有函数在成功后都会返回true,但在我看来,这可能会在未来使用(因此,false表示错误)。

这个函数会返回true是有原因的吗?还是我在退出无效函数时遵循了错误的做法?

我知道一个解决方案可能是:

trigger_error('Error notice here');
return false;

但我认为会有一个更优雅的方法。如果没有的话,希望能对最佳实践有所了解。

由于触发错误的操作成功,因此返回TRUE。如果您为第二个参数指定了无效的错误类型,那么它将是FALSE

如果你想返回TRUE并在一行中触发一个错误(顺便说一句,在我看来这毫无意义),你可以这样做:

return !trigger_error('Error notice here');

顺便说一句,如果您触发E_USER_ERROR,我怀疑评估返回值的代码是否会达到,因为除非您注册了错误处理程序来捕获它,否则错误将是致命的

如果您想退出一个带有错误消息的函数,您可以在代码中处理该错误消息,则应该使用Exception。尽管这些在程序职能的背景下是否有意义,仍存在很大争议。

您询问了比trigger_error()更优雅的解决方案。

我建议一个更优雅的方法可能是抛出异常,而不是触发错误。