重载PHP die()函数

时间:2011-04-02 17:57:50

标签: php overloading

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

感谢所有......

6 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

  

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

不,你没有。

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

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

答案 2 :(得分: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);

答案 3 :(得分:2)

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

示例:

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

替代方案是将trigger_errorset_error_handler

结合使用

答案 4 :(得分:1)

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

您可能需要查看trigger_error()或使用例外(例如throw new EmailException())。这两个都可能被困,并可选择用于发送电子邮件。

答案 5 :(得分:0)

为什么不创建自己的自定义die();功能?只需创建custom_die();并让它发送电子邮件然后死();。

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