目次に戻る
デバッグ用関数の導入
今までは全て表示に echo
を用いてきました。この方法ではあらゆるものが 文字列 に変換されて表示されていました。しかし、中には文字列に変換せずにもとの形のままの情報を得たいこともあるでしょう。そこでよく使われるデバッグ用の関数、 var_dump
の登場です。この関数を知っているのと知らないので作業効率が大きく変わることもあります。
var_dump
http://php.net/manual/ja/function.var-dump.php
まずは最も基本的な例から。整数をダンプしてみましょう。この関数の名前にもなっていますが、「ダンプ」とは デバッグのために中身を確認する作業 のことを指します。
<?php
$var = 1;
var_dump($var);
int(1)
1の左側に int
と表示されました。これは次回から学んでいく、 型 を表しているものです。 int
は 整数型 を表します。次は以下のコードを実行してみましょう。
<?php
$var = 1;
var_dump($var, 2, 3);
int(1)
int(2)
int(3)
ここで var_dump
関数の2つの特性が見えてくると思います。
- 変数だけでなく、直接 値 をダンプすることも出来る。
- 複数の変数や値を渡すことが出来る。
このコードを実行して上記の結果にはならず、
int(1) int(2) int(3)
と表示されてしまった方、いますでしょうか?もしこう表示されてしまっても何か間違ったことをしてしまったわけではありません。あなたが恐らくブラウザ上でそのまま見ているのが原因でしょう。そのままページの HTMLソース を表示してみてください。正しく表示されるはずです。HTMLを今まで学んできた方であれば、改行コードをソースに記載してもブラウザ上では反映されないのはもちろんご存知ですよね。
HTMLソース上ではなくブラウザ上でそのまま確認したい場合に、以下のように <pre>
タグを利用することがあります。
<pre>
<?php
$var = 1;
var_dump($var, 2, 3);
?>
</pre>
また、いっそのこと 「HTMLじゃなくてテキストとして扱ってしまえ!」 という発想で header
関数を使ってMIMEタイプを text/plain
に変えてしまうのもアリです。これだとソースを見ているのと全く同じことになります。
<?php
header('Content-Type: text/plain; charset=utf-8');
$var = 1;
var_dump($var, 2, 3);
さて、次に文字列をダンプしてみましょう。日本語をダンプする際にはブラウザ上での文字化けを防ぐために header
関数で文字コードを指定しましょう。
<?php
header('Content-Type: text/html; charset=utf-8');
var_dump('a', 'bc', 'def', 'あ');
string(1) "a"
string(2) "bc"
string(3) "def"
string(3) "あ"
string
の右の数字は勘のいい人なら 「文字数かな・・・?」 って予想されると思いますが、半分正解・半分誤りとでも言っておきましょうか。何故ならば最後の例の あ
で文字数だとおかしな結果となるからです。厳密な正解は バイト数です。この概念に関しては次の項で詳しく解説していくので、お楽しみに。
最後にいろいろな例を掲載しておきます。これから先、最終的にはこの全てを説明します。
<?php
var_dump('Test') // 文字列
var_dump(1); // 整数値
var_dump(1.0); // 浮動小数点数(一般値)
var_dump(1.8e308); // 浮動小数点数(無限大値)
var_dump(1.8e308 - 1.8e308); // 浮動小数点数(NAN値)
var_dump(true); // 論理値(真)
var_dump(false); // 論理値(偽)
var_dump(null); // NULL値
var_dump(array()); // 配列
var_dump(new stdClass); // オブジェクト
var_dump(tmpfile()); // リソース
string(4) "Test"
int(1)
float(1)
float(INF)
float(NAN)
bool(true)
bool(false)
NULL
array(0) {
}
object(stdClass)#1 (0) {
}
resource(1) of type (stream)
Xdebugによる拡張
Xdebugは、var_dump
による表示を見やすくするための機能などを備えた拡張ライブラリ(エクステンション)です。本来は PECL (PHP Extension Community Library) から自分でダウンロードしてきてインストールする必要があるのですが、何とXAMPPには既にインストール済みで、php.iniの設定で有効化するだけで使えるようになります。
Xdebugによるデバッグ環境の構築
http://keicode.com/cgi/introducing-xdebug.php