zoukankan      html  css  js  c++  java
  • php debug_backtrace方法跟踪代码调用

    php debug_backtrace方法跟踪代码调用
    <pre>
    function string 当前的函数名,参见: __FUNCTION__。
    line integer 当前的行号。参见: __LINE__。
    file string 当前的文件名。参见: __FILE__。
    class string 当前 class 的名称。参见 __CLASS__
    object object 当前的 object。
    type string 当前调用的类型。如果是一个方法,会返回 "->"。如果是一个静态方法,会返回 "::"。 如果是一个函数调用,则返回空。
    args array 如果在一个函数里,这会列出函数的参数。 如果是在一个被包含的文件里,会列出包含的文件名。
    </pre>
    index.php
    <pre>
    <?php
    require 'order.php';

    // 获取用户订单资料
    $order_id = 1000000;

    $oOrder = new Order;
    $order_info = $oOrder->get_order($order_id);
    ?>
    </pre>
    order.php
    <pre>
    <?php
    require 'user.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;

    }

    }
    ?>
    </pre>
    user.php
    <pre>
    <?php
    require 'message.php';

    // 用户资料
    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;

    }

    }
    ?>
    </pre>
    message.php
    <pre>
    <?php
    // 用户讯息
    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;

    }

    }
    ?>
    </pre>


    <pre>
    /message.php:15:
    array (size=3)
    0 =>
    array (size=7)
    'file' => string '/user.php' (length=9)
    'line' => int 12
    'function' => string 'get_message' (length=11)
    'class' => string 'Message' (length=7)
    'object' =>
    object(Message)[3]
    'type' => string '->' (length=2)
    'args' =>
    array (size=1)
    0 => int 1001
    1 =>
    array (size=7)
    'file' => string '/order.php' (length=10)
    'line' => int 14
    'function' => string 'get_user' (length=8)
    'class' => string 'User' (length=4)
    'object' =>
    object(User)[2]
    'type' => string '->' (length=2)
    'args' =>
    array (size=1)
    0 => int 1001
    2 =>
    array (size=7)
    'file' => string '/index.php' (length=9)
    'line' => int 8
    'function' => string 'get_order' (length=9)
    'class' => string 'Order' (length=5)
    'object' =>
    object(Order)[1]
    'type' => string '->' (length=2)
    'args' =>
    array (size=1)
    0 => int 1000000
    </pre>

    可以看到调用过程是
    <pre>
    1.index.php
    line 8
    class Order
    function get_order
    args int 1000000

    2.order.php
    line 14
    class User
    function get_user
    args int 1001

    3.user.php
    line 12
    class Message
    function get_message
    args int 1001
    </pre>

    这个方法主要看 某个函数是调用方式是怎么样的 来解决问题的

  • 相关阅读:
    FZU 2150 Fire Game
    POJ 3414 Pots
    POJ 3087 Shuffle'm Up
    POJ 3126 Prime Path
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    字符数组
    HDU 1238 Substing
    欧几里德和扩展欧几里德详解 以及例题CodeForces 7C
    Codeforces 591B Rebranding
  • 原文地址:https://www.cnblogs.com/newmiracle/p/11856285.html
Copyright © 2011-2022 走看看