PHPで変数内の構造化情報をわかりやすく表示できるライブラリ「php-ref」の使い方

先日、PHPのvar_dumpを用いて、HTML上にも変数内の値をわかりやすくする方法を紹介しました。

PHP開発をしていてバグがあった時に変数の中身を確認したいなんて時があります。そんなときは、var_dump関数を用いて、変...

通常のデバッグならこれでも十分なんですが、より手軽にわかりやすく表示できる「php-ref」というライブラリも良かったので、初期設定と使い方をメモがてら紹介です。

スポンサーリンク
レクタングル(大)広告

php-refとは

php-refの出力例

php-refは、綺麗にPHP変数内の構造を表示してくれるライブラリです。

php-refでは、r()という非常に短い関数を使うことで、print_rやvar_dumpの代わりとなって、とても見やすいデータ表示をしてくれます。やはり、rの一文字で、利用できるのはとても楽です。

通常、var_dumpを使うと以下のようになる出力でも

array(2) { [“vegetable”]=> array(3) { [“carrot”]=> string(12) “にんじん” [“tomato”]=> string(9) “トマト” [“onion”]=> string(12) “たまねぎ” } [“fruit”]=> array(3) { [“apple”]=> string(9) “りんご” [“orange”]=> string(12) “オレンジ” [“grape”]=> string(9) “ぶどう” } }

以下のように、非常に見やすく表示してくれます。

php-refで配列を表示

当然ながら、配列だけではなく、クラスなども綺麗に出力してくれます。詳しくは、HTML出力や、テキスト出力のデモを参照してみてください。

HTML出力デモ

テキスト出力デモ

php-refの使い方

php-refの利用は、とても簡単なんですが、最初にちょっとした初期設定をする必要があります。

php-refを利用するには、主に以下の手順が必要です。

  1. php-refのダウンロード&設置
  2. コードを書く

ライブラリの設置さえできてしまえば、とても手軽に利用できます。

php-refのダウンロード&設置

まずは、php-refをダウンロードする必要があります。

ダウンロードは、digitalnature/php-refから「Download ZIP」ボタンを押してZIPファイルをダウンロードしてください。

GitHub - digitalnature-php-ref- A better alternative to print_r - var_dump

ダウンロードが終わると「php-ref-master.zip」というファイルができるので解凍してください。

中には、以下のようなファイルが入っています。

php-refから3つのファイルを取り出す

その中から以下のファイルを取り出します。

  • ref.css
  • ref.js
  • ref.php

あとはこれらのファイルを、PHPのプロジェクトファイルにコピペなどで放り込みます。

WordPressの子テーマで利用するなら、以下のように置きます。

Wordpress子テーマでphp-refを設置した場合

こんな感じで、置いておけば初期設定は終了です。

コードを書く

あとは、PHP内で以下のようにライブラリを呼び出します。

require_once 'ref.php';
現在のファイルの場所(階層)がref.phpファイルの場所と違う場合は、ファイルのパスを合わせる必要があります。

あとは、中身を参照したい変数などが出てきたときに、以下のように書けばHTMLで出力されます。

r($var);

参考 HTML出力例

以下のように書くと、テキスト出力されます。

rt($var);

参考 テキスト出力例

ちなみに、デバッグ出力した後のコードを実行させたくないときは、以下のように書きます。

~r($var);  //HTML
~rt($var); //テキスト

デバッグ用の出力を変数に収めたい場合は、以下のように書きます。

$output = @r($var);  //HTML
$output = @rt($var); //テキスト

Sublime Textのスニペット

僕の場合は、Sublime Textに以下のようにコードを登録しておいて利用したいときに、手軽に利用できるようにしています。

<snippet>
  <content><![CDATA[
require_once 'ref.php';
ref::config('expLvl', 3);//3階層まで展開して表示
r(${1});
]]></content>
  <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
  <tabTrigger>ref_r</tabTrigger>
  <!-- Optional: Set a scope to limit where the snippet will trigger -->
  <scope>source.php</scope>
</snippet>

以下の部分は、php-refはデフォルトで、1階層しか展開して表示されないので、3階層展開して表示されるように設定を変更しています。

ref::config('expLvl', 3);//3階層まで展開して表示

その他のオプションに関しては、GitHubで確認してください。

動作確認

テストとして、以下のようなコードを書いて試してみました。

$foods = array("vegetable" => array("carrot" => "にんじん","tomato" => "トマト","onion" => "たまねぎ"),"fruit" => array("apple" => "りんご","orange" => "オレンジ","grape" => "ぶどう"));
require_once 'ref.php';
ref::config('expLvl', 3);//3階層まで展開して表示
r($foods);

で、以下のように表示されれば、設定完了です。

php-refで配列を表示

次回からは、手軽にデバッグを行うことができます。

まとめ

ちょっとしたデバッグ作業なら、PHPに標準であるvar_dumpで十分かと思います。

けれど、「クラス変数の内部を詳細に分析したい」とか「なるべく構造化データを整理して表示したい」なんて時には、php-refの方が見やすくて使いやすいです。

比較的大きなプロジェクトで利用する場合は、最初にデバッグライブラリの設定をしておくと後々楽になるかもしれません。

その他のPHPをデバッグライブラリとして、以下のようなものもあります。

PHPで開発するときに画面上に変数等の値を表示してdebugすることがあると思います。とりあえずphp-ref、Kint、VarDumper、debuglib、Chrome Loggerの5つまと…
スポンサーリンク
レクタングル(大)広告
レクタングル(大)広告

スポンサーリンク