PHPでデバッグログを出力する方法を現役エンジニアが解説【初心者向け】

初心者向けにPHPでデバッグログを出力する方法について現役エンジニアが解説しています。PHPではvar_dump関数やvar_export、print_rなどの関数で変数やオブジェクトの中身をダンプすることが出来ます。それぞれの違いやログファイルへ出力する方法を解説します。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

今回は、PHPでデバッグログを出力する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

 

PHPについてそもそもよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、PHP/Laravel講座の内容をもとに紹介しています。

 

田島悠介

今回は、PHPに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PHPでデバッグログを出力する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

var_dump関数の概要と使い方

PHPのvar_dump関数は、引数として渡した変数の中身を詳細に表示する(ダンプする)ための関数です。

主に、コーディングした処理内容が、正しいか検証する「デバッグ」を行う際に使用します。
 

var_dump関数の使い方

var_dump($ダンプしたい変数)

使い方は、var_dump関数に、引数として「ダンプしたい変数」を渡します。

var_dump関数を実行した結果、返り値として値を何も返しません。(返り値の型が「void」)
 

var_export関数の概要と使い方

PHPのvar_export関数も、var_dump関数と同じく引数として渡した変数の中身を表示するための関数です。

var_export関数も、主にデバッグ時に使用する関数で、var_dump関数と非常によく似ています。var_dump関数は、返り値を返却しないのに対し、var_export関数は、返り値として「ダンプした結果」が返却される違いがあります。

つまり、var_export関数でダンプした変数の内容を、変数に代入し、その後のPHPスクリプト内で使用できるということです。
 

使い方

var_export($ダンプしたい変数[, $返却フラグ])

使い方は、var_export関数の第一引数に「ダンプしたい変数」を渡します。

また、第二引数にboolean型で「true」を引数として渡した場合、var_export関数はダンプした変数の内容を返却します。

第二引数はオプションのため、引数を渡すかは任意です。引数を渡さない場合は、デフォルトでboolean型で「false」に設定されているため何も返却しません。
 

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

print_r関数の概要と使い方

PHPのprint_r関数も、var_dump関数やvar_export関数と同じく引数として渡した変数の中身を表示するためのデバッグ用の関数です。

print_r関数は、var_export関数と同じく、返り値として「ダンプした結果」を返却できます。

var_dump関数とvar_export関数と比べ、print_r関数は値だけを確認したいというような、簡易的なデバッグを行う際に使用するとよいでしょう。
 

使い方

print_r($ダンプする変数 [, $返却フラグ])

使い方は、print_r関数の第一引数に「ダンプしたい変数」を渡します。

また、第二引数にboolean型で「true」を引数として渡した場合、print_r関数はダンプした変数の内容を返却します。

第二引数はオプションのため、引数を渡すかは任意です。引数を渡さない場合は、デフォルトでboolean型で「false」に設定されているため、何も返却しません。
 

実際に書いてみよう

下記の例では、var_dump関数・var_export関数・print_r関数を使用して実際に変数の中身をダンプし、その表示内容を比較しています。

また、var_export関数とprint_r関数は返り値を使用して、ログファイルにその内容を出力する方法を紹介します。

<?php
$array = array(
 'apple' => 'りんご',
 'orange' => 'みかん',
 'banana' => 'ばなな'
);

var_dump($array);
var_export($array);
print_r($array);
?>

 

出力結果

array(3) {
  ["apple"]=>
  string(9) "りんご"
  ["orange"]=>
  string(9) "みかん"
  ["banana"]=>
  string(9) "ばなな"
}

array (
  'apple' => 'りんご',
  'orange' => 'みかん',
  'banana' => 'ばなな',
)

Array
(
  [apple] => りんご
  [orange] => みかん
  [banana] => ばなな
)

上記の、出力結果を見ると、その表示方法が微妙に異なることが確認できます。
 

ログファイルに出力

下記の例では、error_log関数を使用して、第三引数に指定したログ出力用のファイルにダンプしています。

error_log関数の第一引数にvar_export関数かprint_r関数を使用することで、返り値のダンプ結果が引数として渡されます。
※error_log関数の第二引数に3を渡すことで、ファイル出力します。

<?php
$array = array(
 'apple' => 'りんご',
 'orange' => 'みかん',
 'banana' => 'ばなな'
);
error_log(var_export($array, true), 3, './debug.txt');
error_log(print_r($array, true), 3, './debug.txt');
?>

 

まとめ

以上、PHPでデバッグする時に使用する関数を紹介しました。

var_dump関数・var_export関数・print_r関数の違いは、ダンプ結果の表示内容が異なる点にあります。

また、var_export関数とprint_r関数は返り値を返却するので、ログファイルに書き出すような場合には、この2つの関数を使用しましょう。
 

筆者プロフィール

平野大輝(ひらのだいき)

スキル:PHP・Java・JavaScriptを用いて様々なアプリを開発するWebエンジニア。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、PHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。