読者です 読者をやめる 読者になる 読者になる

デバッグに役立つかも?traceを表示する関数

例外クラスって便利だねー

ソース

<?php

function dump_trace()
{
    $e = new Exception();
    $trace = $e->getTrace();
    
    array_shift( $trace);
    foreach ( $trace as $i => $item) {
        echo "#{$i} {$item['file']}({$item['line']}): ";
        
        if( isset( $item['class'])) echo $item['class'];
        if( isset( $item['type'])) echo $item['type'];
        
        echo "{$item['function']}(";
        foreach ( $item['args'] as $k => $arg) {
            if( $k > 0 ) echo ',';
            echo var_export( $arg, true);
        }
        echo ")\n";
    }
}

使い方サンプル

<?php
// c:\some_dir\test.php

somefunc( 'arg');

function somefunc( $arg) {
    echo "in somefunc\n";
    dump_trace();
    echo "\n";
    
    somefunc2( 'arg1', 'arg2');
}

function somefunc2( $arg, $arg2) {
    echo "in somefunc2\n";
    dump_trace();
}

上記コードの結果

in somefunc
#0 C:\some_dir\test.php(4): somefunc('arg')

in somefunc2
#0 C:\some_dir\test.php(11): somefunc2('arg1','arg2')
#1 C:\some_dir\test.php(4): somefunc('arg')