加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 简化调试

发布时间:2020-12-13 16:44:07 所属栏目:PHP教程 来源:网络整理
导读:有没有办法实现以下目标? $myvar = 'x';debug($myvar); // outputs the following // myvar value is x 显然,为此,调试函数需要能够获取传递给它的变量名. 对此有一个神奇的常数吗? 如果没有,请推荐可以简化调试的替代方法. 当然,我知道你将变量名称作为单
有没有办法实现以下目标?

$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

有帮助吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读