PHP-如何获取变量';她叫什么名字?
我想制作一个用于调试的小函数,它以人类可读的格式打印变量的内容 该函数基于CakePHP框架中的PHP-如何获取变量';她叫什么名字?,php,variables,namespaces,Php,Variables,Namespaces,我想制作一个用于调试的小函数,它以人类可读的格式打印变量的内容 该函数基于CakePHP框架中的pr()快捷方式,即: 到目前为止,我有: function pr($var,$msg){ $pr_debug=true; if($pr_debug){ echo "<pre>"; if($msg) echo "<b>".$msg.": </b>"; if(gettype($var)=="array"
pr()
快捷方式,即:
到目前为止,我有:
function pr($var,$msg){
$pr_debug=true;
if($pr_debug){
echo "<pre>";
if($msg) echo "<b>".$msg.": </b>";
if(gettype($var)=="array" || gettype($var)=="object" ) echo "<br>";
print_r($var);
echo "</pre>";
}
}
//应输出:
$foo = 'bar';
$baz = 'foo';
echo $$baz; // bar
^^-- note the doubled $'s
那么,在我的函数中,如何将变量的名称作为字符串获取,以便输出它呢?
i、 e.具有pr($foo)代码>我需要“foo”
,
$name=“biz”;pr($$name)代码>我需要“biz”,
等等
最好我想要的东西,将工作,尽管PHP全局配置或任何(顺便说一句,我不是很了解,所以任何帮助全局的东西将不胜感激)
谢谢
额外:在stackoverflow,如何格式化源代码以获得PHP格式和颜色?现在,我简单地使用了文本区域中的工具栏并选择了“代码示例”…您想要的是变量。。。但事实上,你并不想要它们。在现代编程中,它们几乎和“goto”一样糟糕:
function debug($out) {
global $$out;
echo $out, ': ', $$out;
}
$foo = 'bar';
debug($foo);
问题是,当您进入调试代码时,变量名称的“源”已经丢失,例如
这将不会输出“foo”作为名称,因为名称“$foo”未传递给函数。只有$foo
的值,即条进入。您应该接受字符串作为输入,而不是变量,然后使用$$var
获取变量的值和$var
获取变量的名称。请注意,当您有一个函数函数foo($a)
,$a
最初可能是函数的返回值、代数表达式、文字值或任何数量的非命名变量。我试图概述为什么在老问题上这不是一个有用的想法的一些原因:但是如果不调用debug($foo),我将其称为debug(“foo”),然后它会像预期的那样工作,呼应“foo:bar”,这就是我想要的!因此,我不需要直接将$var作为参数传递,而只需要修改我的函数以接收变量的名称(作为字符串),然后将其与$$一起使用以获取其内容。我说得对吗?是的,但请记住,在函数中,该变量无论如何都超出范围。
$foo = 'bar';
$baz = 'foo';
echo $$baz; // bar
^^-- note the doubled $'s
function debug($out) {
global $$out;
echo $out, ': ', $$out;
}
$foo = 'bar';
debug($foo);