var_dumpで出来ること|PHPでのデバッグ関数について分かりやすく解説!
- システム
エンジニア - PHPのデバッグ関数はどのような機能があるのですか。
- プロジェクト
マネージャー - var_dumpを使用することで、値に加えてデータ型などの情報を出力できます。それでは、var_exportやprint_r、debug_print_backtraceの違いについても紹介いたしましょう。
PHPのvar_dump関数でデバッグしよう!
今回は、PHPでのデバッグ関数の使い方について紹介します。var_dumpを使用することで、値に加えてデータ型などの情報を出力できます。
var_exportやprint_r、debug_print_backtraceとの違いについて紹介します。また、PHPのフレームワークであるLaravelのdumpやddの使い方についても紹介します。
PHPでのデバッグに興味のある方はぜひご覧ください。
基本的な使い方
var_dumpの基本的な使い方を紹介します。値に加えて、データ型などの情報を出力します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
// 整数型
$vInt = 10;
var_dump($vInt);
// int(10)
// 文字列型
$vStr = 'mystring';
var_dump($vStr);
// string(8) "mystring"
// 浮動小数点数型
$vFltoat = 10.1;
var_dump($vFltoat);
// float(10.1)
// 論理型
$vBool = true;
var_dump($vBool);
// bool(true)
// null型
$vNull = null;
var_dump($vNull);
// NULL
// 配列型
$vArray = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);
var_dump($vArray);
// array(3) {
// ["key1"]=>
// string(6) "value1"
// ["key2"]=>
// string(6) "value2"
// ["key3"]=>
// string(6) "value3"
// }
// オブジェクト型
class SomeClass{
var $name = 'taro';
var $age = 30;
}
$vObj = new SomeClass();
var_dump($vObj);
// object(SomeClass)#1 (2) {
// ["name"]=>
// string(4) "taro"
// ["age"]=>
// int(30)
// }
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
int(10)
string(8) "mystring"
float(10.1)
bool(true)
NULL
array(3) {
["key1"]=>
string(6) "value1"
["key2"]=>
string(6) "value2"
["key3"]=>
string(6) "value3"
}
object(SomeClass)#1 (2) {
["name"]=>
string(4) "taro"
["age"]=>
int(30)
}
|
var_exportやprint_rとの違い
var_dump、var_export、print_rの違いについて紹介します。var_exportはPHPコードで出力されます。print_rは変数の内容が簡易的に表示されます。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
$vArray = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);
var_dump($vArray);
//array(3) {
// ["key1"]=>
// string(6) "value1"
// ["key2"]=>
// string(6) "value2"
// ["key3"]=>
// string(6) "value3"
//}
var_export($vArray);
//array (
// 'key1' => 'value1',
// 'key2' => 'value2',
// 'key3' => 'value3',
//)
echo "\n";
print_r($vArray);
//Array
//(
// [key1] => value1
// [key2] => value2
// [key3] => value3
//)
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
array(3) {
["key1"]=>
string(6) "value1"
["key2"]=>
string(6) "value2"
["key3"]=>
string(6) "value3"
}
array (
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
)
Array
(
[key1] => value1
[key2] => value2
[key3] => value3
)
|
型情報まで確認したい場合はvar_dumpがよいでしょう。
var_exportとprint_rは、結果を変数に格納できます。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
|
$vArray = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);
$var_export_res = var_export($vArray, true);
$print_r_res = print_r($vArray, true);
echo "$var_export_res\n";
echo "$print_r_res";
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
11
|
array (
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
)
Array
(
[key1] => value1
[key2] => value2
[key3] => value3
)
|
変数に代入したい場合は、var_exportまたはprint_rがよいでしょう。
debug_print_backtrace
debug_print_backtraceの基本的な使い方を紹介します。スタックトレースを出力します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
function func_a() {
// func_bの呼び出し
func_b();
}
function func_b() {
// func_cの呼び出し
func_c();
}
function func_c() {
// func_dの呼び出し
func_d();
}
function func_d(){
// スタックトレースの表示
debug_print_backtrace();
}
// func_aの呼び出し
func_a();
|
実行結果は以下のようになります。スタックトレースが表示されることが分かります。
1
2
3
4
|
#0 func_d() called at [/workspace/Main.php:14]
#1 func_c() called at [/workspace/Main.php:9]
#2 func_b() called at [/workspace/Main.php:4]
#3 func_a() called at [/workspace/Main.php:23]
|
Laravelでのdump
PHPのフレームワークであるLaravelのdump系の関数を紹介します。ここでは、artisan tinkerで確認します。実際のコマンドを見てみましょう。
まずはvar_dumpです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
$ php artisan tinker
Psy Shell v0.10.6 (PHP 7.4.1 — cli) by Justin Hileman
>>> $vArray = array(
... 'key1' => 'value1',
... 'key2' => 'value2',
... 'key3' => 'value3'
... );
=> [
"key1" => "value1",
"key2" => "value2",
"key3" => "value3",
]
>>> var_dump($vArray);
array(3) {
["key1"]=>
string(6) "value1"
["key2"]=>
string(6) "value2"
["key3"]=>
string(6) "value3"
}
=> null
|
次はdumpです。var_dumpよりも出力結果が見やすいです。
1
2
3
4
5
6
7
8
9
10
11
|
>>> dump($vArray);
array:3 [
"key1" => "value1"
"key2" => "value2"
"key3" => "value3"
]
=> [
"key1" => "value1",
"key2" => "value2",
"key3" => "value3",
]
|
dd(dump and die)も使用可能です。dump時に処理を終了します。
1
2
3
4
5
6
7
|
>>> dd($vArray);
array:3 [
"key1" => "value1"
"key2" => "value2"
"key3" => "value3"
]
>>>
|
- システム
エンジニア - var_dumpやvar_exportやprint_r、debug_print_backtraceの違いについてもよく分かりました。
- プロジェクト
マネージャー - ご紹介したソースコードをご自身でも書いてみてください。
まとめ
いかがでしたでしょうか。PHPでのデバッグ関数の使い方について紹介しました。var_dumpを使用することで、値に加えてデータ型などの情報を出力できます。
var_exportやprint_r、debug_print_backtraceとの違いや、PHPのフレームワークであるLaravelのdumpやddの使い方についても理解を深めることができたでしょうか。
ぜひご自身でソースコードを書いて、デバッグしてみてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)