• PHP 中 var_export、print_r、var_dump 调试中的区别


    1、output basic type

    代码

    
    $n = "test";
    
    var_export($n);
    print_r($n);
    var_dump($n);
    
    echo '-----------------' . '<br/><br/>';
    
    file_put_contents("index.log", var_export($n, true) . PHP_EOL, FILE_APPEND);
    file_put_contents("index.log", print_r($n, true) . PHP_EOL, FILE_APPEND);
    file_put_contents("index.log", var_dump($n) . PHP_EOL, FILE_APPEND);
    
    

    结果

    (1)前端:

    'test'
    test
    /Users/xjnotxj/Program/PhpstormProject/colin/index.php:9:string 'test' (length=4)
    -----------------
    /Users/xjnotxj/Program/PhpstormProject/colin/index.php:15:string 'test' (length=4)

    (2)index.log:

    'test'
    test

    2、output array

    代码

    
    $arr = array(
        "a" => 1,
        "b" => "222",
        "c" => 3,
    );
    
    var_export($arr);
    print_r($arr);
    var_dump($arr);
    
    echo '-----------------' . '<br/><br/>';
    
    file_put_contents("index.log", var_export($arr, true) . PHP_EOL, FILE_APPEND);
    file_put_contents("index.log", print_r($arr, true) . PHP_EOL, FILE_APPEND);
    file_put_contents("index.log", var_dump($arr) . PHP_EOL, FILE_APPEND);
    
    

    结果

    (1)前端:

    array ( 'a' => 1, 'b' => '222', 'c' => 3, )
    Array ( [a] => 1 [b] => 222 [c] => 3 )
    /Users/xjnotxj/Program/PhpstormProject/colin/index.php:13:
    array (size=3)
    'a' => int 1
    'b' => string '222' (length=3)
    'c' => int 3
    -----------------
    /Users/xjnotxj/Program/PhpstormProject/colin/index.php:19:
    array (size=3)
    'a' => int 1
    'b' => string '222' (length=3)
    'c' => int 3

    (2)index.log:

    array (
    'a' => 1,
    'b' => '222',
    'c' => 3,
    )
    Array
    (
    [a] => 1
    [b] => 222
    [c] => 3
    )

    3、output object

    代码

    
    class foo
    {
        public $n;
        public function do_foo()
        {
            echo "Doing foo." . $this->n;
        }
    }
    $object = new foo;
    
    var_export($object);
    print_r($object);
    var_dump($object);
    
    echo '-----------------' . '<br/><br/>';
    
    file_put_contents("index.log", var_export($object, true) . PHP_EOL, FILE_APPEND);
    file_put_contents("index.log", print_r($object, true) . PHP_EOL, FILE_APPEND);
    file_put_contents("index.log", var_dump($object) . PHP_EOL, FILE_APPEND);
    
    

    结果

    (1)前端:

    foo::__set_state(array( 'n' => NULL, ))

    foo Object ( [n] => )

    /Users/xjnotxj/Program/PhpstormProject/colin/index.php:19:
    object(foo)[1]
    public 'n' => null
    -----------------
    /Users/xjnotxj/Program/PhpstormProject/colin/index.php:25:
    object(foo)[1]
    public 'n' => null

    (2)index.log:

    foo::__set_state(array(
    'n' => NULL,
    ))
    foo Object
    (
    [n] =>
    )


    总结:

    1、输出结果的详细性:var_export ≈ print_r < var_dump

    2、调试的时候,调用 var_export、print_r、var_dump 的时候,不用在前加echo

    3、var_export,print_r 的第二个参数为true则返回值。var_dump 不支持,所以用 file_put_contents 输出调试的时候不要用 var_dump。

    4、推荐开发环境的调试直接使用 var_dump,可以获得详细的调试信息和代码行数定位;生产环境的调试使用 var_export 或 print_r,第二个参数记得设置为 true 转为返回输出值,而不是直接输出到前端影响线上。

  • 相关阅读:
    google搜索教程
    phoenix/stack-five
    phoenix/stack-four
    phoenix/stack-three
    phoenix/stack-one
    fork 在 Linux 内核里面的实现
    无文件执行 ELF
    glibc 堆内存管理杂记
    QOS shaping 知识要点
    QOS CQ
  • 原文地址:https://www.cnblogs.com/xjnotxj/p/9196823.html
Copyright © 2020-2023  润新知