zoukankan      html  css  js  c++  java
  • php 的简单易用的调式方法,打印方法

    简单的调试方法:echo, print_r, var_dump, exit, debug_backtrace(), debug_print_backtrace(), gettype(), get_class() 等等函数。

    echo, print_r, var_dump:  打印变量(包括数组和自定义的object)的值。

    exit: 立即退出所有运行,但已经输出的返回给浏览器,即会显示。

    debug_backtrace(), debug_print_backtrace():  打印调用堆栈,甚至是参数的详细值。可以不带参数,若带参数 DEBUG_BACKTRACE_IGNORE_ARGS则不会打印参数。debug_backtrace()有返回,而debug_print_backtrace()无返回: $data = debug_backtrace(); 也可以用如下代码达到目的:

    $e = new Exception();
    $error_string = $e->getTraceAsString();            
    $error_string = print_r($e->getTrace(), true);            // 返回更详细,如 局部变量,行号等
    echo '<pre>'; var_dump($error_string); echo '<pre>'; // 前后都添加 echo '<pre>'; 可以将回车键显示出来
                                      // 告诉浏览器中间的输出为plain text),因为html中回车键没作用。

    gettype(), get_class():  一个是获取变量类型,一个是获取变量的class。 如 gettype($a), get_class($a)

    示例:
    echo $a;       // 或者 print_r($a),  或者 var_dump($a),或者 echo gettype($a),    echo get_class($a)
    exit;
    $a输出没问题的话就在下一个输出加exit,虽然效率慢点,但很容易找出哪里错了。

    debug_backtrace(), debug_print_backtrace()也是直接插入到你要打印调用栈的地方。

    debug_print_backtrace() 的输出范例:

    #0  c() called at [/tmp/include.php:10]
    #1  b() called at [/tmp/include.php:6]
    #2  a() called at [/tmp/include.php:17]
    #3  include(/tmp/include.php) called at [/tmp/test.php:3]
    有可能从 debug_backtrace() 返回的元素
    名字类型说明
    function string 当前的函数名,参见: __FUNCTION__
    line integer 当前的行号。参见: __LINE__
    file string 当前的文件名。参见: __FILE__
    class string 当前 class 的名称。参见 __CLASS__
    object object 当前的 object
    type string 当前调用的类型。如果是一个方法,会返回 "->"。如果是一个静态方法,会返回 "::"。 如果是一个函数调用,则返回空。
    args array 如果在一个函数里,这会列出函数的参数。 如果是在一个被包含的文件里,会列出包含的文件名。

    debug_backtrace() 输出范例:

    array(2) {
    [0]=>
    array(4) {
        ["file"] => string(10) "/tmp/a.php"
        ["line"] => int(10)
        ["function"] => string(6) "a_test"
        ["args"]=>
        array(1) {
          [0] => &string(6) "friend"
        }
    }
    [1]=>
    array(4) {
        ["file"] => string(10) "/tmp/b.php"
        ["line"] => int(2)
        ["args"] =>
        array(1) {
          [0] => string(10) "/tmp/a.php"
        }
        ["function"] => string(12) "include_once"
      }
    }

    var_dump和print_r的区别:
                var_dump返回表达式的类型与值而print_r仅返回结果,相比调试代码使用var_dump更便于阅读。

    $arr=array(array('a'=>'aa','b'=>'bbb','c'=>'ccc'),
               array('a'=>'ddd','b'=>'eee','c'=>'fff'),
               array('a'=>'gg','b'=>'hh'));
    print_r($arr);
    //print_r输出:
     //Array ( [0] => Array ( [a] => aa [b] => bbb [c] => ccc )
                       [1] => Array ( [a] => ddd [b] => eee [c] => fff )
                       [2] => Array ( [a] => gg [b] => hh ) )

    //var_dump输出:
    /* array (size=3)
      0 =>
      array (size=3)
       'a' => string 'aa' (length=2)
       'b' => string 'bbb' (length=3)
       'c' => string 'ccc' (length=3)
      1 =>
      array (size=3)
               'a' => string 'ddd' (length=3)
       'b' => string 'eee' (length=3)
       'c' => string 'fff' (length=3)
      2 =>
      array (size=2)
       'a' => string 'gg' (length=2)
       'b' => string 'hh' (length=2)
    */

    下面在给出一个json格式的输出:
    $arr=array(array('a'=>'aa','b'=>'bbb','c'=>'ccc'),
               array('a'=>'ddd','b'=>'eee','c'=>'fff'),
               array('a'=>'gg','b'=>'hh'));
    $arra=json_encode($arr);
    print_r($arra);
    //print_r输出:
     [{"a":"aa","b":"bbb","c":"ccc"},{"a":"ddd","b":"eee","c":"fff"},{"a":"gg","b":"hh"}]
    var_export($arra);
    //var_export输出:
     '[{"a":"aa","b":"bbb","c":"ccc"},{"a":"ddd","b":"eee","c":"fff"},{"a":"gg","b":"hh"}]'
    var_dump($arra);
    //var_dump输出:
     string '[{"a":"aa","b":"bbb","c":"ccc"},{"a":"ddd","b":"eee","c":"fff"},{"a":"gg","b":"hh"}]' (length=84)

  • 相关阅读:
    毫秒时间格式转换
    Gulp前端服务器本地搭建
    前端构建工具Gulp的学习和使用
    Grunt入门学习之(3) -- Gruntfile具体示例
    Grunt入门学习之(2) -- Gruntfile的编写
    Grunt入门学习之(1) -- 环境安装
    toLocaleTimeString()方法在IE和谷歌浏览器上 根据本地时间格式,把 Date 对象的时间部分(不含日期)转换为“时间字符串”存在区别
    zTree 学习笔记之(一)
    C语言 在VS环境下一个很有意思的报错:stack around the variable was corrupted
    C#.Net 调用方法,给参数赋值的一种技巧
  • 原文地址:https://www.cnblogs.com/welhzh/p/5877926.html
Copyright © 2011-2022 走看看