我想创建一个函数,如果第一次调用它,它的行为会有所不同,而在其余时间它的行为会有所不同。现在要做到这一点,我知道我可以使用“状态”变量。这里还提供了一些其他技术: 检查函数是否已被调用
但是我不知何故从一位同事那里得到了一个提示,即 debug_backtrace() 可以用来解决这个问题。我读过它,但不明白怎么做?此函数提供函数调用的堆栈跟踪。这如何判断该函数是否已被第一次调用?
让我困惑的确切代码在这里:
/**
* Holds the states of first timers
* @var array
*/
private static $firstTimeCSS=array();
private static $firstTimeJS=array();
/**
* Tells whether it is the first time this function is called on
* ANY CLASS object or not. Useful for one-time scripts and styles
*
* @param string $class name optional. Usually you should send __CLASS__ to this, otherwise the instance ($this) class would be used.
* @return boolean
*/
final protected function IsFirstTime($class=null)
{
$t=debug_backtrace();
if ($t[1]['function']=="JS")
$arr=&self::$firstTimeJS;
else
$arr=&self::$firstTimeCSS;
if ($class===null)
$class=$this->Class;
if (isset($arr[$class]))
return false;
else
{
$arr[$class]=true;
return true;
}
}