【问题标题】:Is there any way to show, or throw, a PHP warning?有没有办法显示或抛出 PHP 警告?
【发布时间】:2009-07-08 02:26:51
【问题描述】:

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

如果我尝试访问$class->sum(如果未设置属性,即当我用$sum == false 调用select() 时),我想显示一个警告,就像那些正常的PHP 错误一样。

有没有办法显示这样的警告,或者我应该只是回显一个错误并感到高兴?

【问题讨论】:

    标签: php warnings


    【解决方案1】:

    如果你想产生一个警告,你应该写

    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 语句。

    【讨论】:

    • 不要忘记 return ; 用于例如__call__callStatic,它只是一个函数,它不是语言结构。如果你不这样做,你的函数可能会在更远的地方失败,它不应该放在首位
    【解决方案2】:

    你可以试试trigger_error()

    【讨论】:

    • ... 使用 E_WARNING 作为第二个参数。
    • trigger_error() 只能接受 E_USER 系列的警告;请改用 E_USER_WARNING。
    【解决方案3】:

    您将采用面向对象的方法,因此我建议您查看exceptions.

    【讨论】:

    • +1 Exceptions 将为您提供完整的回溯信息以进行调试,而 trigger_error() 不会为您提供有用的文件名/行号。
    • 是的,你是对的,但是这个问题的一个例外就是这么麻烦。这是一个易于恢复的非致命错误,在开发过程中会很快发生;触发警告足以告知开发人员发生了什么。
    • 警告的存在是有原因的。你不应该只是忽略它们并继续你快乐的方式,因为有些事情很可能但不一定出错。抛出异常迫使程序员在脚本结束之前处理错误。如果您只是想通知开发人员,异常仍然是一种更强大的方法,因为当状态可能不再正确时,您的程序将无法继续。如果您想继续,您可以尝试您的代码,捕获错误并酌情处理。
    • @Zhigalin-ReinstateCMs 只有库应该发出弃用警告。使用已弃用函数的代码(“本页”)不应更改弃用警告。不推荐使用的功能仍然有效......今天,所以状态将是正确的(除非有错误)。它们可能会在库的下一个版本中被删除。如果您看到“此页面”中使用了已弃用的函数,则负责任的做法是重构您的代码以仅使用未弃用的函数。
    猜你喜欢
    • 2012-05-06
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2010-10-06
    相关资源
    最近更新 更多