有没有一种方法可以显示或抛出PHP警告?

69

我在一个数据库类中有一个select()方法,这个方法有一个可选的布尔类型参数$sum。该参数用于指定该方法是否应该使用COUNT(*)

如果我尝试访问$class->sum但没有设置该属性(即当我使用$sum == false调用select()时),我希望能够显示一个警告消息,就像普通PHP错误一样。

有没有办法像这样显示警告,或者我只需要输出一个错误并快乐地结束?

3个回答

105
如果你想生成一个警告,你应该编写:<\/p>
trigger_error($yourErrorMessage, E_USER_WARNING);

trigger_error()函数有一个$error_type参数,用于设置错误级别(NoticeWarningFatal error)。常量分别为:

E_USER_NOTICE             // Notice (default)
E_USER_WARNING            // Warning
E_USER_ERROR              // Fatal Error

请注意,Fatal error会停止后续PHP代码的执行,而NoticeWarning则会让其继续执行。

从PHP 5.5开始,您还应考虑Finally语句。


2
在例如 __call__callStatic 中使用 return ; 时,请不要忘记它只是像其他任何函数一样的函数,而不是语言结构。如果您不这样做,您的函数可能会在某些不应该进入的地方失败。 - jave.web

15

11
将 E_WARNING 作为第二个参数使用。 - too much php
12
trigger_error()只能接受属于E_USER类别的警告,应该使用E_USER_WARNING代替。 - jevon

7

你正在采用面向对象的方法,因此我建议查看异常处理。


2
+1 异常会提供完整的回溯信息以进行调试,而 trigger_error() 不会提供有用的文件名/行号。 - too much php
1
是的,你说得对,但为这个问题设置一个异常处理会带来很多麻烦。这只是一个容易恢复的非致命性错误,在开发过程中很快就会发生;触发一个警告就足以通知开发人员发生了什么。 - igorsantos07
警告存在是有原因的。你不应该忽略它们,继续你愉快的方式,因为某些事情很可能但不一定出了问题。抛出异常强制程序员在脚本结束之前处理错误。如果你只想通知开发人员,异常仍然是更强大的方法,因为当状态可能不再正确时,你的程序不会继续运行。如果你想继续,可以尝试你的代码,捕获错误并适当地处理它。 - CJ Dennis
@CJDennis 如果我只是想通知,例如,此页面正在使用应该在某一天转换的已弃用函数呢? - Zhigalin - Reinstate CMs
仅库应引发弃用警告。使用废弃函数(“此页面”)的代码不应更改弃用警告。弃用函数仍然正常工作... 今天,所以状态将是正确的(除非存在错误)。它们可能会在下一个库版本中被删除。如果您看到在“此页面”中使用弃用函数,则负责的做法是重构您的代码以仅使用非弃用函数。 - CJ Dennis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接