php – 简化调试

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 简化调试脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法实现以下目标?

$myVAR = 'x';
debug($myvar); 

// outputs the following 
// myvar value is x

显然,为此,调试函数需要能够获取传递给它的变量名.

对此有一个神奇的常数吗?
如果没有,请推荐可以简化调试的替代方法.

当然,我知道你将变量名称作为单独的参数传递的选项,

debug('myvar',$myvar);

但我的目标是完全避免这样做.

解决方法

在全局范围内显示变量的变量名称及其值

是的,有,但你需要传递名称

function debug($var_name) {
    PRintf('%s value is %s',$var_name,var_export($GLOBALS[$var_name],true));
}

或者,如果您只想要没有可解析格式的值:

function debug($var_name) {
    printf('%s value is %s',$GLOBALS[$var_name]);
}

在本地范围内显示变量的变量名称及其值

注意:这仅适用于全局范围内的变量.要对本地范围执行相同操作,您可能需要使用get_defined_vars()的解决方案,如下所示:

printf('%s value is %s',get_defined_vars()[$var_name]);

这不能简单地包含在debug()函数中.这是因为get_defined_vars()返回表示调用get_defined_vars()的范围内的变量的数组,并且我们不需要定义debug()的范围,不是吗?

统一解决方

统一解决方案可以使用全局范围作为认值,但也接受一些表示本地范围的数组,因此定义可以是:

function debug($var_name,$scoPE_vars=null) {
    if ($scope_vars === null) {
        $scope_vars = $GLOBALS;
    };
    printf('%s value is %s',var_export($scope_vars[$var_name],true));
}

然后你可以在全局范围内调用它:

debug('myvar');

或者像在本地范围内那样,传递本地范围数组:

debug('myvar',get_defined_vars());

工作实例

有关工作示例,请参阅此演示:http://ideone.com/NOtn6

有帮助吗?

脚本宝典总结

以上是脚本宝典为你收集整理的php – 简化调试全部内容,希望文章能够帮你解决php – 简化调试所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。