我想检查上次是否调用了某个函数。请考虑以下示例代码
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
在我的项目中,我需要条件语句出现在函数中。
我有一个使用常量/全局变量/计数器的想法,但不知道如何实现。有什么想法来检测函数的最后一次调用?
答案 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