phpでシステムの開発を行っている時のデバック方法を記載します。
システムを開発している時に変数や配列の値を確認しながら作業すると思います。
変数や配列の値を確認する方法は「var_dump」や「print_r」などの関数を使用すると思いますが、皆さんはどのような方法でデバックしていますか?
「var_dump」や「print_r」をそのまま使用すると、一列に表示されるので複雑な配列や値が多く含む配列だと非常に見にくいです。
変数や配列を見やすくするため、私は下記の方法でデバックしています。
■ phpで変数や配列の値をデバックする方法
・「var_dump」を使用した場合
【PHP】
$arr = array('aaa', 'bbb', 'ccc'); var_dump($arr);
【出力結果】
array(3) { [0]=> string(3) "aaa" [1]=> string(3) "bbb" [2]=> string(3) "ccc" }
・「print_r」使用した場合
【PHP】
$arr = array('aaa', 'bbb', 'ccc'); print_r($arr);
【出力結果】
Array ( [0] => aaa [1] => bbb [2] => ccc )
・使用しているデバック方法
「debug_backtrace」を使用し、ファンクションが呼びだしたファイルのパスと行数を出力するようにしています。
「pre」タグを使用することによって出力内容が見やすくなります。後はCSSでより見やすくなるように調整してます。
「func_get_args」を使用し、関数に引数リストを取得してます。
【PHP】
独自でデバック関数
function dp() { $arr = debug_backtrace(); echo '<div>' . $arr[0]['file'] . ' ' . $arr[0]['line'] . '</div>'; $args = func_get_args(); echo '<pre style="border:1px solid #CCC; padding: 5px; font-family: monospace; font-size: 12px;">'; foreach ($args as $val) { print_r($val); } echo '</pre>'; }
上記の関数を呼び出します。
$arr = array('aaa', 'bbb', 'ccc'); dp($arr);
【出力結果】
/var/www/html/[パス]/test.php 28 Array ( [0] => aaa [1] => bbb [2] => ccc )
出力した内容に改行がそのまま表示されるので、見やすく開発効率も上がると思います。
■ debug_backtrace()とは
関数を呼び出したバックトレースを連想配列で返します。
下記のように出力されます。
Array ( [file] => [関数を呼び出したファイルの絶対パス] [line] => 28 [function] => dp (省略) )