note 92713 added to function.debug-backtrace
| From: | profixatcms-studiodotnet at osu1 dot php dot net | Date: | Wed, 05 Aug 2009 01:30:29 +0000 |
| Subject: | note 92713 added to function.debug-backtrace | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-159120@lists.php.net to get a copy of this message | ||
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.
----
Server IP: 147.32.160.17
Probable Submitter: 212.71.183.40
----
Manual Page -- http://www.php.net/manual/en/function.debug-backtrace.php
Edit -- https://master.php.net/note/edit/92713
Del: integrated -- https://master.php.net/note/delete/92713/integrated
Del: useless -- https://master.php.net/note/delete/92713/useless
Del: bad code -- https://master.php.net/note/delete/92713/bad+code
Del: spam -- https://master.php.net/note/delete/92713/spam
Del: non-english -- https://master.php.net/note/delete/92713/non-english
Del: in docs -- https://master.php.net/note/delete/92713/in+docs
Del: other reasons-- https://master.php.net/note/delete/92713
Reject -- https://master.php.net/note/reject/92713
Search -- https://master.php.net/manage/user-notes.php