PHPでサクッとデバッグしたい時用に関数を作った

エンジニアの佐山です!

前回のPHPのビルトインサーバーに関連するのですが、仮想化環境にはxdebugとかが入っているものの、ビルトインサーバーでも見やすくデバッグしたいそんなことを考え、適当にオレオレ関数を作ってビルトインサーバーでもマシになるようにしました。

前回同様にPHPディレクトリから作業を進めます。

index.phpを作成

すでにある場合は、内容をいかに書き換えてください。

<?php
$arr = array(
  hoge => array(
    'name' => 'tom'
  ),
  hoge2 => array(
    'name' => 'jessy'
  )
);

var_dump($arr);

出力結果は以下

array(2) {
  ["hoge"]=>
  array(1) {
    ["name"]=>
    string(3) "tom"
  }
  ["hoge2"]=>
  array(1) {
    ["name"]=>
    string(5) "jessy"
  }
}

これだけでも悪くはないかな...と思うのですが、もっとわかりやすくしていきたいと思います。

debug.php

PHPディレクトリにdebug.phpを作成します。

$ vi debug.php

エディタを開いたら、以下を入力 f:id:sayamaken0402:20180815124045p:plain

<?php
function vd($val){
  $bt = debug_backtrace();
  $file = $bt[0]['file'];
  $line = $bt[0]['line'];
  highlight_string("<?php\n".var_export($val, true)."\n");
  echo $file.''.$line.'行目が実行されました';
  echo '<hr>';
}

上記でvdという関数を作成しました。

index.phpにdebug.phpを読み込ませる

index.phpを開き、require_once追記

<?php
require_once('./debug.php');
$arr = array(
  hoge => array(
    'name' => 'tom'
  ),
  hoge2 => array(
    'name' => 'jessy'
  )
);

vd($arr);

先ほどは、var_dump();で配列を展開していた箇所をdebug.phpで作成したvdという関数に置き換えましょう。

出力結果

以下のように シンタックスとファイル名、処理が実行された行番号が表示されるようになるかと思います。

f:id:sayamaken0402:20180815124045p:plain