怎么知道代码的执行过程呢,也就是说怎么知道:是先执行哪些代码,然后执行哪些代码呢?
这里有一个非常犀利的函数,可以让你知道代码的执行过程 debug_backtrace() 函数。
来一段代码:
Logger::$to_php_log = function ($level, $message) { if($level < Logger::$level) return; $titles = array( Logger::DEBUG => E_USER_NOTICE, Logger::INFO => E_USER_NOTICE, Logger::WARNING => E_USER_WARNING, Logger::ERROR => E_USER_ERROR, ); $caller = debug_backtrace()[2]; trigger_error($message.' in '.$caller['file'].' on line '.$caller['line'].''." <br />", $titles[$level]); };
上面的 $caller = debug_bacetrace()[2] 的意思是调用当前这个 函数的 再往前推两层的那个函数。 $caller 指向的就是调用当前函数的前两层函数,我不知道讲清楚了没有:
在讲一下:
funtion A(){ function B (){ function c(){ $caller = debug_backtrace()[2]; } } }
假设当前执行的函数是 c 的话,那么,上面的 $caller 就是外面的函数A(). 我要说的就是这个意思。
这里记录一下 debug_backtrace() 这个函数的用法。