我正在编写自己的调试函数,我需要一些帮助来修复下面的代码。
我正在尝试打印一个变量及其名称、声明变量和函数的文件以及函数调用的行。我做的第一部分,变量、变量名、文件和行打印正确。在代码中,a($variable)效果很好。
问题是我希望这个函数也接受一个字符串,来自一个变量。但是 PHP 返回一个致命错误(PHP Fatal error: Only variables can be pass by reference in ...)。在代码中,a('text out')。
那么,如何修复此代码以正确接受变量或字符串?
代码(已编辑):
function a(&$var){
$backtrace = debug_backtrace();
$call = array_shift($backtrace);
$line = $call['line'];
$file = $call['file'];
echo name($var)."<br>".$var."<br>".$line."<br>".$file;
}
$variable='text in';
a($variable);
a('text out');
我需要通过引用传递变量才能在下面使用此函数(该函数正确获取变量名称,也适用于数组):
function name(&$var, $scope=false, $prefix='unique', $suffix='value'){
if($scope) $vals = $scope;
else $vals = $GLOBALS;
$old = $var;
$var = $new = $prefix.rand().$suffix;
$vname = FALSE;
foreach($vals as $key => $val) {
if($val === $new) $vname = $key;
}
$var = $old;
return $vname;
}