note 92713 deleted from function.debug-backtrace by danbrown

From: Date: Fri, 09 Apr 2010 00:25:27 +0000
Subject: note 92713 deleted from function.debug-backtrace by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-168051@lists.php.net to get a copy of this message
Note Submitter: profix at cms-studio dot net ---- Maybe it can be useful ... :) <? function IsRecursiveCall() { $ret=false; $cc=debug_backtrace(); $thisfunction=array_shift($cc); if ($callerfunction=array_shift($cc)) { $name=$callerfunction["function"]; reset($cc); while ($cx=each($cc)) if ($ret=($cx["value"]["function"]==$name)) break; } return $ret; } function GetRecursiveCallLevel() { $ret=0; $cc=debug_backtrace(); $thisfunction=array_shift($cc); if ($callerfunction=array_shift($cc)) { $name=$callerfunction["function"]; reset($cc); while ($cx=each($cc)) if ($cx["value"]["function"]==$name) $ret++; } return $ret; } // -- example -------------------------- function RecursiveFunction() { echo "Recursive function begin.\n"; $level=GetRecursiveCallLevel(); echo "Recursive level is: ".$level."\n"; echo "Is it recursive ? "; if (IsRecursiveCall()) echo "yes"; else echo "no"; echo "\n"; if ($level<5) RecursiveFunction(); echo "Recursive function end.\n"; } // ----------------------- echo "<pre>\n"; RecursiveFunction(); echo "</pre>\n"; ?> Output is: Recursive function begin. Recursive level is: 0 Is it recursive ? no Recursive function begin. Recursive level is: 1 Is it recursive ? yes Recursive function begin. Recursive level is: 2 Is it recursive ? yes Recursive function begin. Recursive level is: 3 Is it recursive ? yes Recursive function begin. Recursive level is: 4 Is it recursive ? yes Recursive function begin. Recursive level is: 5 Is it recursive ? yes Recursive function end. Recursive function end. Recursive function end. Recursive function end. Recursive function end. Recursive function end.

« previous php.notes (#168051) next »