オーダーメイドコース
icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

監修してくれたメンター

nakamoto

アジマッチ有限会社代表取締役社長。書籍化歓迎。対応業務:PHP(Laravel)、機械学習、Vue.js、LAMP・AWS、越境EC、CTO、エンジニア採用、CTO、経営者の不安解決コンサルティング。

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

PHPでデバッグログを出力することで、PHPのデバッグで何を行ったか確認できます。

実務でも、PHPでデバッグログを出力して、動作検証を行いますので、ぜひ学習してみてください。

目次

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

 

田島悠介

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

大石ゆかり

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

田島悠介

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

大石ゆかり

お願いします!

 

デバッグ

デバッグとは、作成したプログラムを実際に利用しながら、処理の詳しい流れを確認することです。

デバッグを行うことで、プログラムをリリースする前に不具合を検証することが可能です。

PHPで、デバッグを行う代表的な関数には次の3つがあります。

  1. var_dump関数
  2. var_export関数
  3. print_r関数

 

var_dump関数の概要と使い方

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

ダンプとは表示するという様な意味です。

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

 

var_dump関数の使い方

サンプルコード

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

解説

var_dump関数に、引数として「ダンプしたい変数」を指定します。

var_dump関数を実行した結果、返り値として値を何も返しません。

返り値とは、戻り値とも呼ばれ、関数を実行した結果得られる値を意味します。

 

[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは

var_export関数の概要と使い方

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

var_export関数も、主にデバッグ時に使用する関数で、var_dump関数と非常によく似ています。

var_dump関数は、返り値を返却しないのに対し、var_export関数は、返り値として「ダンプした結果」が返却される違いがあります。

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

 

サンプルコード

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

解説

var_export関数の第1引数に「ダンプしたい変数」を渡します。

引数とは、関数を利用する際に関数側で処理するための値です。

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

第2引数はオプションのため、引数を渡すかは任意です。

引数を渡さない場合は、デフォルトでboolean型で「false」に設定されているため何も返却しません。

boolean型というのは、真か偽かを表す変数の型です。

真の場合は「true」、偽の場合は「false」という結果になります。

 

print_r関数の概要と使い方

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

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

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

 

サンプルコード

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

解説

print_r関数の第1引数に「ダンプしたい変数」を渡します。

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

第2引数はオプションのため、引数を渡すかは任意です。

引数を渡さない場合は、デフォルトでboolean型で「false」に設定されているため、何も返却しません。

 

実際に書いてみよう

var_dump関数とvar_export関数とprint_r関数を使用して実際に書いてみましょう。

 

デバッグ内容を表示する

ここでは、var_dump関数とvar_export関数とprint_r関数を使用して実際に変数の中身をダンプし、比較する実装を実際に書いてみましょう。

サンプルコード

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

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

 

実行結果

解説

<?phpでは、PHPプログラムを開始しています。

$array = array(では、配列を宣言して、変数$arrayに代入しています。

‘apple’ => ‘りんご’,が1つ目の配列データです。

‘orange’ => ‘みかん’,が2つ目の配列データです。

‘banana’ => ‘ばなな’が3つ目の配列データです。

);では配列の宣言を終了しています。

var_dump($array);では、var_dumpを利用して変数$arrayをデバッグしています。

var_export($array);では、var_exportを利用して変数$arrayをデバッグしています。

print_r($array);では、print_rを利用して変数$arrayをデバッグしています。

 

ログファイルに出力する

ここでは、var_export関数とprint_r関数は返り値を使用して、ログファイルにその内容を出力する方法を実際に書いてみましょう。

サンプルコード

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

 

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

error_log関数の第1引数にvar_export関数かprint_r関数を使用することで、返り値のダンプ結果が引数として渡されます。
※error_log関数の第2引数に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では、PHPプログラムを開始しています。

$array = array(では、配列を宣言して、変数$arrayに代入しています。

‘apple’ => ‘りんご’,が1つ目の配列データです。

‘orange’ => ‘みかん’,が2つ目の配列データです。

‘banana’ => ‘ばなな’が3つ目の配列データです。

);では配列の宣言を終了しています。

error_log(var_dump($array,true), 3, ‘./debug1.txt’);では、var_dumpを利用してデバッグしています。

var_dumpは戻り値がないため、debug1.txtには何も保存されません。

var_dumpの場合は、プレビュー画面にデバッグ結果が表示されます。

error_log(var_export($array, true), 3, ‘./debug2.txt’);では、var_exportを利用して、debug2.txtにデバッグ結果を次のように保存しています。

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

error_log(print_r($array, true), 3, ‘./debug3.txt’);では、print_rを利用して、debug3.txtにデバッグ結果を次のように保存しています。

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

 

まとめ

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

戻り値については、PHPで関数を自作して戻り値を返す方法も参考にしてみてください。

引数については、PHPで関数と引数を使う方法も参考にしてみてください。

boolean型については、PHPの論理演算子の使い方も参考にしてみてください。

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

var_export関数とprint_r関数は返り値を返却するので、ログファイルに保存することができました。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

PHPを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのPHP/Laravelコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、PHP/Laravelを使ったWebアプリケーション開発を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!