【PHP调试】有用的PHP调试函数

首先

初次见面,我是一个刚开始学习编程的bookkuun。
我会在Qiita上输出我所学到的东西。
如果对我的文章有任何疑问或建议,请指出并提供建议。

本次我们将整理关于PHP调试的内容。

目标对象 zhě)

    • PHPを学び始めて間もない方

 

    PHPのデバッグ方法を整理したい方

构成

    • デバッグとは?

 

    • PHPのエラーの種類

デバッグ方法

print_r
var_dump
var_export
error_log

まとめ
おわりに
参考資料

什么是调试?

调试是指发现程序中的错误和缺陷,并进行修正以确保其正确运行的过程。

PHP错误的类型

エラー内容Fatal error
(致命的なエラー)処理を継続することが不可能になった場合に発生します。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の表示が異なります。

工作表

データ型値print_rvar_dumpvar_export整数123123int(123)123文字列samplesamplestring(6) “sample”‘sample’真偽値(true)true1bool(true)true真偽値(false)false
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()??

广告
将在 10 秒后关闭
bannerAds