【PHP调试】有用的PHP调试函数
首先
初次见面,我是一个刚开始学习编程的bookkuun。
我会在Qiita上输出我所学到的东西。
如果对我的文章有任何疑问或建议,请指出并提供建议。
本次我们将整理关于PHP调试的内容。
目标对象 zhě)
-
- PHPを学び始めて間もない方
- PHPのデバッグ方法を整理したい方
构成
-
- デバッグとは?
-
- PHPのエラーの種類
デバッグ方法
print_r
var_dump
var_export
error_log
まとめ
おわりに
参考資料
什么是调试?
调试是指发现程序中的错误和缺陷,并进行修正以确保其正确运行的过程。
PHP错误的类型
(致命的なエラー)処理を継続することが不可能になった場合に発生します。Parse error
(構文エラー)コードの文法が誤っていることに発生します。Warning
(警告)処理を継続することは可能。
想定外の問題が起こった時に発生します。Notice
(注意)処理を継続することは可能。
想定内の問題に起こった時に発生します。
参考资料
– Qiita:PHP错误类型和原因
– Qiita:PHP错误类型
– 基本中的基本!PHP编程错误的类型和内容 | 株式会社LIG
调试方法
打印_r
-
- 変数の値に関する情報を解り易い形式で表示します。(PHP マニュアル – Manual引用)
-
- 配列の表示が見やすいです。
-
- trueは1と表示されます。
- falseとNULLは何も表示されません。
代码示例
<?php
//整数
$number = 100;
print_r($number);
//文字列
$moji = "sample";
print_r($moji);
//真偽値
$shin = true;
$gi = false;
print_r($shin);
print_r($gi);
//NULL
$data = null;
print_r($data);
//配列など
$fruits = array('a' => 'apple', 'b' => 'banana', 'c' => array('orange', 'grape', 'strawberry'));
print_r($fruits);
使用这个浏览器功能(通过< pre >标签)输出结果。
//$number(整数)
100
//$moji(文字列)
sample
//$shin(真偽値/true)
1
//$gi(真偽値/false)
//$data(NULL)
// $fruits(配列など)
Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => orange
[1] => grape
[2] => strawberry
)
)
打印信息
-
- この関数は、指定した式に関してその型や値を含む構造化された情報を返します。(PHP マニュアル – Manual引用)
表示できる変数に指定はなく、数値や文字列、配列といった様々な型の変数の値を確認することができます。
データ型や構造など詳細な情報を表示するには、var_dump関数を使用します。
代码样例
<?php
//整数
$number = 100;
var_dump($number);
//文字列
$moji = "sample";
var_dump($moji);
//真偽値
$shin = true;
$gi = false;
var_dump($shin);
var_dump($gi);
//NULL
$data = null;
var_dump($data);
//配列など
$fruits = array('a' => 'apple', 'b' => 'banana', 'c' => array('orange', 'grape', 'strawberry'));
var_dump($fruits);
通过使用浏览器和
标签进行输出。
//$number(整数)
int(100)
//$moji(文字列)
string(6) "sample"
//$shin(真偽値/true)
bool(true)
//$gi(真偽値/false)
bool(false)
//$data(NULL)
NULL
//$fruits(配列など)
array(3) {
["a"]=>
string(5) "apple"
["b"]=>
string(6) "banana"
["c"]=>
array(3) {
[0]=>
string(6) "orange"
[1]=>
string(5) "grape"
[2]=>
string(10) "strawberry"
}
}
将以下内容在中文中原生地复述,请只提供一种选项:
var_export
-
- 渡された変数に関する構造化された情報を返します。この関数は var_dump() に似ていますが、 返される表現が有効な PHP コードであるところが異なります。(PHP マニュアル – Manual引用)
-
- print_rと表示は似ています。var_dumpで見づらいときや文字列として出力したいときなどに活用できます。
-
- trueはtrueと表示されます。(print_rは1と表示されます。)
- falseとNULLはfalseとNULLとそのまま表示されます。(print_rはfalseとNULLは何も表示されません。)
代码示例 (Codes/example)
范例代码 (Sample code)
编码示例 (Encoding example)
<?php
//整数
$number = 100;
var_export($number);
//文字列
$moji = "sample";
var_export($moji);
//真偽値
$shin = true;
$gi = false;
var_export($shin);
var_export($gi);
//NULL
$data = null;
var_export($data);
//配列など
$fruits = array('a' => 'apple', 'b' => 'banana', 'c' => array('orange', 'grape', 'strawberry'));
var_export($fruits);
出力(ブラウザ/
タグを使用しています。)
//$number(整数)
100
//$moji(文字列)
'sample'
//$shin(真偽値/true)
true
//$gi(真偽値/false)
false
//$data(NULL)
NULL
//$fruits(文字列など)
array (
'a' => 'apple',
'b' => 'banana',
'c' =>
array (
0 => 'orange',
1 => 'grape',
2 => 'strawberry',
),
)
错误日志 (wù cuò rì zhì)
-
- エラーメッセージを Web サーバーのエラーログあるいはファイルに送ります。(PHP マニュアル – Manual引用)
- エラーをログとして残したい時に使用します。
当将print_r和var_export的第二个参数设为true时,它们将返回一个值。由于var_dump不返回值,所以在这里无法使用。
代码样例
<?php
$fruits = ['a' => 'apple', 'b' => 'banana', 'c' => ['orange', 'grape', 'strawberry']];
//error_log(メッセージ, メッセージタイプ, 出力先)
//メッセージタイプ
//0の場合は標準出力など
//1の場合はメールの送付先アドレス
//3の場合は出力先ファイルパス
//print_rの場合
error_log(print_r($fruits, true), 3, "./print_r.txt");
//var_exportの場合
error_log(var_export($fruits, true), 3, "./var_export.txt");
日志文件 (jì zhì
Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => orange
[1] => grape
[2] => strawberry
)
)
array (
'a' => 'apple',
'b' => 'banana',
'c' =>
array (
0 => 'orange',
1 => 'grape',
2 => 'strawberry',
),
)
总结
-
- 配列の要素数やデータ型など細かい情報を確認したい場合はvar_dumpを使用します。
- print_rとvar_exportは似ているが、真偽値やNULLの表示が異なります。
工作表
bool(false)falseNULLnull
NULLNULL配列など[‘apple’, ‘orange’, ‘grape’][0] => apple
[1] => orange
[2] => grapearray(3)
{
[0]=> string(5) “apple”
[1]=> string(6) “orange”
[2]=> string(5) “grape”
}array
(
0 => ‘apple’,
1 => ‘orange’,
2 => ‘grape’,
)
最后
非常感谢您读到最后。print_r和var_export确实相似,但它们之间存在这样的区别。这是一个新的发现。未来,我希望能够适当地利用调试函数,将其用于解决错误。
请查阅相关文献
PHP 手册 – 手册
PHP错误类型和原因 – Qiita
PHP错误类型 – Qiita
基本中的基本! PHP编程错误类型和内容 | 株式会社LIG
var_dump、var_export、print_r、哪一个在调试时使用最好!?- Qiita
使用print_r()还是var_dump()??