PHP调试。接下来该做什么?解释一下var_export,一个实用而强大的工具。

你好,
我是万代,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);

输出结果将类似于以下内容:

array ( 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 Array ( [0] => a [1] => b [2] => c [3] => d )

顺便一提,PHP: var_export - 手册 中的示例源代码
展示了如何使用 eval 将 var_exported 的数据再次定义为变量,尽管其用途尚不明确。它本质上就是这么做的。

 

var_export 的真正威力

var_export 在 API 开发中真正大放异彩,而这正是我们擅长的领域。
在 API 开发中,处理接收到的请求并将其输出为 JSON 格式是很常见的做法。然而,使用 var_dump 返回的 JSON 数据会附带 var_dump 信息作为响应,这不可避免地会导致客户端在尝试解析 JSON 时出现错误。

在这种情况下,您通常会通过查看日志文件来检查操作,但如前所述,将 var_dump 信息写入日志文件需要一些技巧。
使用 var_export,您只需将第二个参数设置为 true,即可将输出存储在变量中,从而轻松输出到日志文件。

使用 fuelphp,您可以按如下方式将输出写入日志文件:

$hoge = array( 'a', 'b', 'c', 'd', );日志::调试(var_export($hoge, true));

这是使用可变参数的 var_dump 函数无法做到的。

var_dump 函数很有用,因为它还会输出数组中的数据项数量。

我只能说,你会习惯的。
仅此而已。

如果您想咨询开发专业人士

在 Beyond,我们将我们在系统开发方面的丰富经验、技术和专业知识与开源软件技术和云技术(如 AWS)相结合,以可靠的质量和卓越的性价比提供网络系统的合同开发服务。

我们还负责服务器端/后端开发和专有 API 协作开发,充分利用我们的技术和专业知识,为大规模、高负载的游戏、应用程序和数字内容构建和运营 Web 系统/应用程序基础设施。

如果您在开发项目方面遇到任何问题,请访问以下网站。

● Web系统开发
● 服务器端开发(API/数据库)

如果您觉得这篇文章对您有帮助,请点个“赞”!
1
加载中...
1票,平均分:1.00/11
3,379
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

万代洋一

我的主要工作是开发社交游戏的Web API,但幸运的是,我也有机会参与其他各种任务,包括市场营销。
我在Beyond中的图像版权采用CC0协议。