【发布时间】:2013-04-02 20:52:58
【问题描述】:
我想创建一个用于调试目的的小函数,它以人类可读的格式打印变量的内容。
该函数基于 CakePHP 框架中的pr() 快捷方式,即this one:
到目前为止我有这个:
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>";
}
}
在变量内容之前打印一条可选消息 ($msg)。
但我想补充的是,如果没有发送消息,也可以打印变量的名称作为这样的消息,所以我可以得到这样的东西:
$myvar="hello";
pr($myvar);
//应该输出:
myvar: hello
所以在我的函数中,我怎样才能将变量的名称作为字符串来输出呢?
即pr($foo); 我需要"foo",
$name="biz"; pr($$name);我需要"biz",
等等……
最好我想要一些尽管 PHP 全局配置或任何配置都可以工作的东西(顺便说一下,我不太了解,所以非常感谢任何关于 GLOBALS 的帮助)。
谢谢!
额外:在stackoverflow,我如何格式化源代码以获取PHP 格式和颜色?到目前为止,我简单地使用了 textarea 中的工具栏并选择了“代码示例”...
【问题讨论】:
-
你应该接受一个字符串作为输入而不是一个变量,然后使用
$$var获取变量的值,使用$var获取变量的名称。 -
意识到当你有一个函数
function foo($a)时,$a最初可能是一个函数的返回值,一个代数表达式,一个文字值,或者任何数量的东西命名变量。 -
我试图概述一些为什么这对于旧问题不是一个有用的想法的一些原因:stackoverflow.com/a/15936154/157957
标签: php variables namespaces