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 有帮助吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |