【问题标题】:Overloading PHP die() function重载 PHP die() 函数
【发布时间】:2011-04-02 17:57:50
【问题描述】:

我需要重载 die() 函数。例如,我想将一个额外的参数传递给 die() 函数,当它设置为 true 时,它​​会向我发送一封电子邮件,告诉我网站发生了异常情况。 你能帮帮我吗!!!

谢谢大家...

【问题讨论】:

    标签: php overloading


    【解决方案1】:

    大家好...我需要重载 die() 函数。

    不,你没有。

    您可以使用set_error_handlerregister_shutdown_function 针对 PHP 错误运行一些代码。

    我将把它作为练习留给读者检查文档和实验,看看这些函数将被触发的关闭场景。

    【讨论】:

    【解决方案2】:

    PHP 不允许这样做。只需使用您自己的功能:

    <?php
    function ddie($email=false){
      if ($email) doemail();
      die();
    }
    ?>
    

    【讨论】:

      【解决方案3】:

      你不能超载内置函数,但你可以写一个包装器:

      function die_with_grace($message, $send_email=false) {
          if ($send_email) {
              // send email here
          }
          die($message);
      }
      
      mysql_query('...') or die_with_grace('Error in query', true);
      

      【讨论】:

        【解决方案4】:

        你不想那样做。 die() 不是错误处理程序。它只是退出脚本。您可能正在寻找的是

        示例:

        $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
        if (!$link) {
            error_log('DB troubles', 1, 'admin@example.com');
            die;
        }
        

        替代方案是将trigger_errorset_error_handler结合使用

        【讨论】:

          【解决方案5】:

          尽管die()exit() 看起来像函数,但它们实际上只是PHP 称之为“语言结构”的内置特性。因此,即使有一种简单的方法来覆盖函数,它也行不通。 (可以通过第三方扩展替换函数,但这不是你真正想要的。)

          您可能想查看trigger_error() 或使用异常(例如throw new EmailException())。这两个都可以被捕获并选择性地用于发送电子邮件。

          【讨论】:

            【解决方案6】:

            为什么不创建自己的自定义 die();功能?只需创建 custom_die();并让它给你发一封电子邮件,然后 die();.

            请注意,由于简单的服务器故障,您可能会偶尔收到大量电子邮件。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-06-09
              • 2018-06-12
              • 1970-01-01
              • 2011-08-15
              • 2023-03-11
              • 2013-08-28
              • 2014-01-03
              相关资源
              最近更新 更多