使用 PHP 进行调试。 现在我该怎么办...?
你好。
我叫 Bandai,负责《Wild》的开发团队。
在进行开发时,调试始终是必须的。 这次,我想解释一下 var_export,它是调试时的强大盟友。
你如何进行调试?
我认为基础中的基础是var_dump。如果您不知道这一点,那么您可能从未编写过 PHP。
然而,var_dump 无法输出到日志(它本身。虽然不是不可能,但考虑到调试目的时一点也不方便)。
我认为这是var_dump最大的问题。
那么,是 print_r 吗?
在 print_r 之前和之后回显 pre 标记真是一个笑话,它不再是一个笑话。我有时会这样做(我会这样做吗?)。
连载? 你想把它放入数据库吗?如果它是 PHP 前提,那很好......它没有任何意义。使用序列化进行调试似乎是一条荆棘之路,但有时会发生。
如果你想显示所有内容,你可以使用 var_dump,但如果你想用它来写日志之类的事情,我推荐 var_export。
也许现在大声说出来还不够。
什么是 var_export?
顾名思义,var_export函数用于导出变量。
作为证明,输出信息与 PHP 变量声明完全相同。
<?php $hoge = array( 'a', 'b', 'c', 'd', ); var_export($hoge);
输出如下所示:
数组 ( 0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd',)
顺便说一句,var_dump和print_r的格式如下。
// var_dump array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string (1) "d" } // print_r 数组 ( [0] => a [1] => b [2] => c [3] => d )
顺便说一句, 的示例源代码
:var_export - Manual描述了如何使用 eval 将 var_exported 数据重新定义为变量,但我不确定它是如何使用的,但这就是要点。
var_export 的真正威力
var_export充分展示了其API开发能力,这是我们的专长。
在API开发中,我们经常会处理收到的请求,并以JSON格式输出,但是当我们使用var_dump时,会返回带有var_dump信息的JSON数据作为响应,所以在客户端解析JSON时,肯定会出错。
当时,我想你经常通过tailing日志文件来检查操作,但正如上面提到的,你需要一些技巧来将var_dump信息写入日志文件。
使用 var_export,只需在第二个参数中添加 true 即可将输出存储在变量中,因此输出到日志文件非常容易。
使用fuelphp,您可以按如下方式输出到日志文件。
$hoge = array( 'a', 'b', 'c', 'd', ); 日志::debug(var_export($hoge, true));
这是具有可变参数的 var_dump 根本无法做到的壮举。
var_dump 很有用,因为它还输出数组中数据项的数量。
我只能说,习惯就好。
就是这样。