如何检查PHP中最后一次调用该函数

时间:2010-10-03 13:22:25

标签: php function call

我想检查上次是否调用了某个函数。请考虑以下示例代码

function foo(){
    if( this is the last call ) {
         echo 'this is the last call of this function';
    }
}

foo(); // should not print
foo(); // should not print
foo(); // since this is the last call, it should print

在我的项目中,我需要条件语句出现在函数中。

我有一个使用常量/全局变量/计数器的想法,但不知道如何实现。有什么想法来检测函数的最后一次调用?

5 个答案:

答案 0 :(得分:1)

您是否尝试过使用built-in shutdown function?

答案 1 :(得分:1)

如果您知道代码中最后一次调用的位置,您可以使用全局变量来执行此操作,例如

function foo(){
    if($GLOBALS['debug_foo']) {
         echo 'this is the last call of this function';
    }
}

$GLOBALS['debug_foo']=false;

foo(); // should not print
foo(); // should not print

$GLOBALS['debug_foo']=true;

foo(); // since this is the last call, it should print

有关更多帮助,请参阅variable scope上的PHP手册页。

如果您在最后一次通话时无法告知代码,可以使用register_shutdown_function,例如

function shutdown()
{
    echo $GLOBALS['foo_dump'];
}

function foo()
{
    $GLOBALS['foo_dump']='record some information here';   
}

//make sure we get notified when our script ends...
register_shutdown_function('shutdown');

foo(); // should not print
foo(); // should not print
foo(); // won't print anything, but when the script ends, our
       // shutdown function will print the last captured bit
       // of diagnostic info

答案 2 :(得分:0)

我真的不认为这是可能的。你无法知道最后一次通话的时间。

编辑:Globals无济于事。正如其他人所说,你正试图预测未来。想象一下,您决定在当天收到的最后一次通话结束时关闭手机。您无法控制谁可能选择给您打电话或何时打电话。

答案 3 :(得分:0)

你试图预测未来 - 这是不可能的。但是,你可以效仿这一点。 该函数每次都会执行此操作,您将缓存每次的结果 您将仅使用上次的结果 另一方面,php.ini有可能自动将脚本附加到进程的末尾。你可以把函数调用放在那里。 (或使用上面提到的寄存器关闭)。 最后一件事,你的设计似乎有一个严重的流程,或者你能详细说明吗?

答案 4 :(得分:0)

如果您是PHP的新手,并且如果我正确地假设该程序的意图,那么保持这样的逻辑并不是最佳实践:该函数在最后一次调用时自行猜测并自行决定。应该在更全球范围内推动此行为。

例如,您可以使用布尔值

  function foo($last=false){
      if( $last ) {
           echo 'this is the last call of this function';
      }
  }

  foo(); // should not print
  foo(); // should not print
  foo(true); // since this is the last call, it should print