• 简单 php 代码跟踪调试实现


    简单 php 代码跟踪调试实现

    debug_backtrace:生成回溯
    debug_print_backtrace:打印回溯

    1. debug_backtrace ($options = DEBUG_BACKTRACE_PROVIDE_OBJECT, $limit = 0) {}

    $backtrace = debug_backtrace();
    var_dump($backtrace);
    

      

    <?php
    
    // 订单资料
    class Order{
    
        // 获取订单资料
        function get_order($order_id){
            $user_id = 1001;
            // 获取用户资料
            $oUser = new User;
            $user_info = $oUser->get_user($user_id);
            // 订单资料
            $order_info = array(
                'order_id' => $order_id,
                'order_name' => 'my order',
                'user_info' => $user_info,
            );
            return $order_info;
        }
    }
    
    class User{
        // 获取用户资料
        function get_user($user_id){
            // 获取用户讯息
            $oMessage = new Message;
            $user_message = $oMessage->get_message($user_id);
            $user_info = array(
                    'user_id' => $user_id,
                    'name' => 'fdipzone',
                    'message' => $user_message
            );
            return $user_info;
        }
    }
    
    class Message{
        // 获取用户讯息
        function get_message($user_id){
            $message = array(
                array('id'=>1, 'title'=>'message1'),
                array('id'=>2, 'title'=>'message2'),
            );
            // 加入跟踪调试
            $backtrace = debug_backtrace();
            var_dump($backtrace);
    
            return $message;
        }
    }
    
    // 获取用户订单资料
    $order_id = 1000000;
    
    $oOrder = new Order;
    $order_info = $oOrder->get_order($order_id);
    View Code

    结果:

    2.打印回溯    

    debug_print_backtrace (int $options = 0,int $limit = 0) :


    $options :此参数是以下选项的位掩码:
    $limit  :此参数可用于限制打印的堆栈帧的数目。

    debug_print_backtrace();
    

      代码:

    <?php
    
    // 订单资料
    class Order{
    
        // 获取订单资料
        function get_order($order_id){
            $user_id = 1001;
            // 获取用户资料
            $oUser = new User;
            $user_info = $oUser->get_user($user_id);
            // 订单资料
            $order_info = array(
                'order_id' => $order_id,
                'order_name' => 'my order',
                'user_info' => $user_info,
            );
            return $order_info;
        }
    }
    
    class User{
        // 获取用户资料
        function get_user($user_id){
            // 获取用户讯息
            $oMessage = new Message;
            $user_message = $oMessage->get_message($user_id);
            $user_info = array(
                    'user_id' => $user_id,
                    'name' => 'fdipzone',
                    'message' => $user_message
            );
            return $user_info;
        }
    }
    
    class Message{
        // 获取用户讯息
        function get_message($user_id){
            $message = array(
                array('id'=>1, 'title'=>'message1'),
                array('id'=>2, 'title'=>'message2'),
            );
            // 加入跟踪调试
            //$backtrace = debug_backtrace();
            //var_dump($backtrace);//fixme or
            debug_print_backtrace();
    
            return $message;
        }
    }
    
    // 获取用户订单资料
    $order_id = 1000000;
    
    $oOrder = new Order;
    $order_info = $oOrder->get_order($order_id);
    View Code

    结果:

  • 相关阅读:
    SVN的具体使用方法介绍(安装以及操作)
    谈谈敏捷开发
    008.MVC与数据库的交互
    001.MVC基本概述
    WebApi接口测试工具
    014.存储过程(sql实例)
    我们为什么需要DTO(数据传输对象)
    ASP.NET使用WebApi接口实现与Android客户端的交互(图片或字符串的接收与回传)
    面试题库[2]
    关于单例模式getInstance()的使用
  • 原文地址:https://www.cnblogs.com/q1104460935/p/10075409.html
Copyright © 2020-2023  润新知