好好爱自己!

PHP 代码跟踪

怎么知道代码的执行过程呢,也就是说怎么知道:是先执行哪些代码,然后执行哪些代码呢?

 

这里有一个非常犀利的函数,可以让你知道代码的执行过程 debug_backtrace()  函数。

来一段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
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'].''."\n<br />", $titles[$level]);
        };

  

上面的 $caller = debug_bacetrace()[2] 的意思是调用当前这个 函数的 再往前推两层的那个函数。  $caller 指向的就是调用当前函数的前两层函数,我不知道讲清楚了没有:

在讲一下:

1
2
3
4
5
6
7
8
9
10
11
funtion A(){
       
        function B  (){
                     
                    function c(){
                             $caller = debug_backtrace()[2];
                    }               
  
        }
         
}

  假设当前执行的函数是 c 的话,那么,上面的 $caller 就是外面的函数A(). 我要说的就是这个意思。

这里记录一下 debug_backtrace() 这个函数的用法。 

posted @   立志做一个好的程序员  阅读(1584)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现

不断学习创作,与自己快乐相处

点击右上角即可分享
微信分享提示