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

php – 发送“var_dump”到FireBug控制台

发布时间:2020-12-13 13:51:57 所属栏目:PHP教程 来源:网络整理
导读:你知道var_dump()除了值显示其数据类型和长度. 有没有办法将其输出记录到FireBug控制台? 我尝试过FirePHP和FireLogger,但都只输出变量的值(有时甚至是不正确的变量值). 也许你需要的是这样的: function var2console($var,$name='',$now=false){ if ($var =
你知道var_dump()除了值显示其数据类型和长度.

有没有办法将其输出记录到FireBug控制台?

我尝试过FirePHP和FireLogger,但都只输出变量的值(有时甚至是不正确的变量值).

也许你需要的是这样的:
function var2console($var,$name='',$now=false)
{
   if ($var === null)          $type = 'NULL';
   else if (is_bool    ($var)) $type = 'BOOL';
   else if (is_string  ($var)) $type = 'STRING['.strlen($var).']';
   else if (is_int     ($var)) $type = 'INT';
   else if (is_float   ($var)) $type = 'FLOAT';
   else if (is_array   ($var)) $type = 'ARRAY['.count($var).']';
   else if (is_object  ($var)) $type = 'OBJECT';
   else if (is_resource($var)) $type = 'RESOURCE';
   else                        $type = '???';
   if (strlen($name)) {
      str2console("$type $name = ".var_export($var,true).';',$now);
   } else {
      str2console("$type = "      .var_export($var,$now);
   }
}

function str2console($str,$now=false)
{
   if ($now) {
      echo "<script type='text/javascript'>n";
      echo "//<![CDATA[n";
      echo "console.log(",json_encode($str),");n";
      echo "//]]>n";
      echo "</script>";
   } else {
      register_shutdown_function('str2console',$str,true);
   }
}

用法:var2console($myvar,’$myvar’);或者简单地var2console($myvar);

将$now参数设置为true很少需要,导致立即输出< script>标签.使用register_shutdown_function()的优点是,您不需要在HTML中注意“你在哪里”.

json_encode()保留从PHP转换为JavaScript的所有字符.唯一的注意事项是编码:json_encode()仅适用于UTF-8(在大多数情况下,这是推荐的编码).如果您使用其他编码(或者您可能考虑切换到UTF-8),则可能需要像utf8_encode()mb_convert_encoding()这样的东西.

Firebug控制台的输出只是var_export()的输出,前面是变量的类型,包括字符串的长度和数组的数量,以及可选的变量名称.

var_export()提供比var_dump()更可读的输出.如果你真的需要var_dump()的输出,你可以使用这样的东西:

function dump2console($var,$now=false)
{
   ob_start();
   if (strlen($name)) {
      echo "$name =n";
   }
   var_dump($var);
   $str = ob_get_clean();
   str2console($str,$now);
}

用法:dump2console($myvar,’$myvar’);或者简单的dump2console($myvar);

您应该避免循环引用(var_dump()检测到它们的步骤太晚,var_export()根本不会检测到它们).这是如何做到的,例如,对于$GLOBALS:

function globals2console($now=false)
{
   $g = $GLOBALS;
   $g['GLOBALS'] = '(recursion)';
   var2console($g,'$GLOBALS',$now);
}

(编辑:李大同)

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

    推荐文章
      热点阅读