PHP 中更漂亮/信息更丰富的 Var_dump 替代方案? [关闭]

Posted

技术标签:

【中文标题】PHP 中更漂亮/信息更丰富的 Var_dump 替代方案? [关闭]【英文标题】:A more pretty/informative Var_dump alternative in PHP? [closed] 【发布时间】:2011-01-09 15:21:31 【问题描述】:

每个体面的 php 程序员都有一个 print_rvar_dump 包装器,他们使用、喜爱和分配快捷键,我们为什么不分享我们最喜欢的

【问题讨论】:

我只使用 echo '
';print_r($var);exit;我什至不关闭它。我想我不正派
我编辑了指向 github 的链接,在那里我继续进行 Kint 开发,如果您仍然有任何问题,请通过任何方式告诉我。 嘿,Kint 很酷!它拯救了我的一天。 为什么一个程序的广告通知 100% 变成了“我自己制作 var_dump()”版本?第一个问题是为什么允许产品广告作为问题。 因为我是在问了这个问题一年多之后才做出这个工具的。我不知道你在困扰什么,我创建了一个 10k+ 行成熟的开源工具,并在多年后不断改进它。我在这个问题中提供了自己的答案——就像 SO 中的传统一样。 【参考方案1】:

在问了这个问题之后,我花了整整一年的时间和精力,终于开源了我的 var_dump 版本,Kint。在the project page 或直接in github 中阅读。

截图如下:

对不起插件:)


编辑:我想提醒评论者,这不是支持论坛,如果您遇到问题/想要功能,请file an issue。支持请求 cmets 将被标记为删除。

【讨论】:

我不得不更改字体大小,并美化 CSS 代码,但做得很好,我喜欢它...来自 Krumo 的老用户 您做了哪些更改,如果您认为这是一个改进,您可以将更改发送到 raveren@gmail.com 我习惯了 Krumo,我想要更小的字体,我还美化了 CSS 代码。没有什么可以称为真正的改进,更像是一种旧习惯:) 这个想法是css应该与js一起压缩,以尽可能少地干扰实际输出。当然,生成的源代码的缩进也计划好了,但我目前没有时间投入到 Kint.. 举个例子,如果你转储一个对象,Kint 会显示受保护的和私有的变量,而 krumo 不会(因为我假设只有前者使用反射类)。一般来说,我发现 Kint 更胜一筹。尽管我还必须调整 css 以使其更可用(在倾倒大量嵌套属性时,巨大的字体效果不佳)。哦,它背后的代码不是一团糟,不能说 Krumo 的东西(对不起 Krumo 作者!)【参考方案2】:

我更喜欢var_dump 函数,as provided by the Xdebug extension:只需安装扩展(在 Windows 和 Linux 上都很简单)var_dump 会得到更好的输出:

更好的格式化 html 颜色 您可以选择调整应该显示多少信息

还有一张快速截图:

当然,Xdebug 还带来了许多其他有用的东西,比如远程调试(例如,在 Eclipse PDT 中对 PHP 应用程序进行图形调试)、分析,...

【讨论】:

我需要在共享主机中使用这个 xdebug 格式化类。有什么办法可以将它包含在我的个人项目中? 如果您不是服务器的管理员(root),您很可能无法安装 PHP 扩展 (我从未见过可以安装一个共享托管服务安装 PHP 扩展) ;所以,不,您将无法使用 Xdebug (无论如何,将其安装在生产服务器上通常不是一个好主意:毕竟它是一个调试扩展);您将不得不退回到基于 PHP 的变量输出函数实现 (请参阅其他答案) 是的,我只需要类在发生错误时向自己发送一些输出。【参考方案3】:

我自己写的:REF (demo):

计划是添加纯文本渲染,并像 Kint 一样显示有关输入表达式的信息...

【讨论】:

干得好,非常好的工具 REF 很棒,色彩丰富,速度很快。我一直在使用它。 很棒的工具,我刚刚切换到它。谢谢! 少数人使用作曲家,嗯...不是我。如果你创建一个dll 我会使用这个“调试”。谢谢,干得好!【参考方案4】:

这是我的,我使用内联,非常有用:

$pretty = function($v='',$c="&nbsp;&nbsp;&nbsp;&nbsp;",$in=-1,$k=null)use(&$pretty)$r='';if(in_array(gettype($v),array('object','array')))$r.=($in!=-1?str_repeat($c,$in):'').(is_null($k)?'':"$k: ").'<br>';foreach($v as $sk=>$vl)$r.=$pretty($vl,$c,$in+1,$sk).'<br>';else$r.=($in!=-1?str_repeat($c,$in):'').(is_null($k)?'':"$k: ").(is_null($v)?'&lt;NULL&gt;':"<strong>$v</strong>");return$r;;

echo $pretty($some_variable);

【讨论】:

喜欢这个功能 - 简单明了,我提到过很简单吗:) 谢谢。我用它所有的时间。真的应该内置到 PHP 中。您可以使用第二个参数输入自己的格式。例如 echo $pretty($some_variable, "--"); 这完美地结合了 print_r、var_dump 和 var_export 的所有最差功能。没有 html 转义,仅接受单个参数,挂起递归,无法返回输出,最重要的是,它是 totally unreadable。我不想成为一个混蛋,但 cmets 只是让它看起来如此完美。 感谢您的评论@Raveren。如果您可以更具体,那么我会改进我的答案。 IMO 最好的单线解决方案就是function pretty()echo'&lt;pre&gt;';foreach(func_get_args()as $arg)ob_start();var_dump($arg);echo htmlentities(ob_get_clean())."\n#####\n#####\n\n";die;。 Var_dump 是一个非常冗长的函数,它处理所有 PHP 的边缘情况(其中有很多)并且是 100% 稳定的,即使不是那么可读。但归根结底,如果您发现您的实现最适合您,那么您绝对应该使用它。【参考方案5】:

您正在寻找 Krumo警告,针对恶意软件的 Chrome 警报)。

简单地说,Krumo 是 print_r() 和 var_dump() 的替代品。根据定义,Krumo 是一个调试工具(最初用于 PHP4/PHP5,现在仅用于 PHP5),它显示有关任何 PHP 变量的结构化信息。

【讨论】:

这太棒了!谢谢。 +1 当我尝试它时,它坏了。我举报了,没有回复也没有新版本 @Pekka 该链接在 Chrome 中引发了恶意软件警告。 今天 krumo 已经被这家伙更新了 github.com/mmucklo/krumo (但 Kint 可能更好,更多细节)【参考方案6】:

我喜欢Firephp 加上firebug

它写出日志信息 使用标题,所以它不会中断 阿贾克斯。 给你一个很好的 的图形表示 您记录的变量/对象 可以显示每个日志语句出现的文件名和行号 易于在您的项目中使用,无论是程序化还是面向对象的 API

【讨论】:

【参考方案7】:

我一直在使用 dBug,它模拟了 Coldfusion 很棒的 cfdump 标签:

http://dbug.ospinto.com/examples.php

【讨论】:

适合像我这样的冷融合开发人员的优雅解决方案【参考方案8】:

我的(部分)解决方案是简单地添加这样的功能(使用 Google Chrome):

<?
function console_dump($value)
 
?>
<script>
    console.log(<? echo json_encode($value); ?>);
</script>
<?

?>

按 Ctrl + Shift + J(打开控制台),您可以在那里找到 JSON 结构。当然,对于漂亮的 JSON 响应打印更有用。

【讨论】:

【参考方案9】:

我使用的完整示例...

<pre>

<?php


//*********** Set up some sample data

$obj = new stdClass;
$obj->a=123;
$obj->pl=44;
$obj->l=array(31,32);

$options = array(
  'Orchestra'=>array(1=>'Strings', 8=>'Brass', 9=>$obj, 3=>'Woodwind', 16=>'Percussion'),
  2=>'Car',
  4=>'Bus',
  'TV'=>array(21=>'Only Fools', 215=>'Brass Eye', 23=>'Vic Bob',44=>null, 89=>false));


//*********** Define the function

function dump($data, $indent=0) 
  $retval = '';
  $prefix=\str_repeat(' |  ', $indent);
  if (\is_numeric($data)) $retval.= "Number: $data";
  elseif (\is_string($data)) $retval.= "String: '$data'";
  elseif (\is_null($data)) $retval.= "NULL";
  elseif ($data===true) $retval.= "TRUE";
  elseif ($data===false) $retval.= "FALSE";
  elseif (is_array($data)) 
    $retval.= "Array (".count($data).')';
    $indent++;
    foreach($data AS $key => $value) 
      $retval.= "\n$prefix [$key] = ";
      $retval.= dump($value, $indent);
    
  
  elseif (is_object($data)) 
    $retval.= "Object (".get_class($data).")";
    $indent++;
    foreach($data AS $key => $value) 
      $retval.= "\n$prefix $key -> ";
      $retval.= dump($value, $indent);
    
  
  return $retval;



//*********** Dump the data

echo dump($options);

?>
</pre>

输出 ...

Array (4)
 [Orchestra] = Array (5)
 |   [1] = String: 'Strings'
 |   [8] = String: 'Brass'
 |   [9] = Object (stdClass)
 |   |   a -> Number: 123
 |   |   pl -> Number: 44
 |   |   l -> Array (2)
 |   |   |   [0] = Number: 31
 |   |   |   [1] = Number: 32
 |   [3] = String: 'Woodwind'
 |   [16] = String: 'Percussion'
 [2] = String: 'Car'
 [4] = String: 'Bus'
 [TV] = Array (5)
 |   [21] = String: 'Only Fools'
 |   [215] = String: 'Brass Eye'
 |   [23] = String: 'Vic Bob'
 |   [44] = NULL
 |   [89] = FALSE

【讨论】:

我将 \n 更改为 PHP_EOL,这在从窗口的 CMD 使用 php 时效果很好【参考方案10】:

这是我的:

class sbwDebug

    public static function varToHtml($var = '', $key = '')
    
        $type = gettype($var);
        $result = '';

        if (in_array($type, ['object', 'array'])) 
            $result .= '
        <table class="debug-table">
            <tr>
            <td class="debug-key-cell"><b>' . $key . '</b><br/>Type: ' . $type . '<br/>Length: ' . count($var) . '</td>
            <td class="debug-value-cell">';

            foreach ($var as $akey => $val) 
                $result .= sbwDebug::varToHtml($val, $akey);
            
            $result .= '</td></tr></table>';
         else 
            $result .= '<div class="debug-item"><span class="debug-label">' . $key . ' (' . $type . '): </span><span class="debug-value">' . $var . '</span></div>';
        

        return $result;
    

样式:

table.debug-table 
  padding: 0;
  margin: 0;
  font-family: arial,tahoma,helvetica,sans-serif;
  font-size: 11px;


td.debug-key-cell 
  vertical-align: top;
  padding: 3px;
  border: 1px solid #AAAAAA;


td.debug-value-cell 
  vertical-align: top;
  padding: 3px;
  border: 1px solid #AAAAAA;


div.debug-item 
  border-bottom: 1px dotted #AAAAAA;


span.debug-label 
  font-weight: bold;

【讨论】:

其实还不错。如果您显示输出示例,可能会被更多人投票。 @acSlater 为我工作,你只需要创建他忘记发布的sbwDebug 类并将函数放入其中。【参考方案11】:

我最近开发了一个免费的 chrome 扩展程序(正在进行中),以美化我的 var 转储,没有库,没有预标记,也没有安装到每个应用程序。全部使用 javascript 和 regEx 完成。您所要做的就是安装扩展程序,然后一切顺利。我也在开发 Firefox 版本。这是 GitHub 页面。我希望尽快在 chrome 和 firefox 网上商店上提供它!

https://github.com/alexnaspo/var_dumpling

这是一个示例输出:

【讨论】:

好兄弟!刚刚下载了您的扩展程序,它完美运行!谢谢! 老兄...谢谢。我一直在寻找类似的东西 虚幻。最好的选择! 用 Firefox 15 试过,说不兼容。有机会绕过这个吗? 这很漂亮,希望我早点找到它!【参考方案12】:

Tracy 使用dump() function 有一个漂亮的可折叠输出。

【讨论】:

【参考方案13】:

那些花哨的库很棒……除了开销。如果你想要一个简单、漂亮的带有无限参数的 var_dump,试试我的函数。它添加了一些简单的 HTML。还添加了数据属性,如果您使用 HTML5,较低版本将忽略它们,但如果您在屏幕上看到的内容不够,可以轻松在浏览器控制台中打开元素并获取更多信息。

布局非常简单,没有开销。为每个参数提供大量信息,包括 gettype 甚至 class 对象转储名称(包括 XML)。这是经过验证的,我已经使用了很多年了。

function preDump()     //  use string "noEcho" to just get a string return only
    $args = func_get_args();
    $doEcho = TRUE; $sb;
    if ($args) 
        $sb = '<div style="margin: 1em 0;"><fieldset style="display:inline-block;padding:0em 3em 1em 1em;"><legend><b>preDump: '.count($args).' Parameters Found.</b></legend>';
        foreach (func_get_args() as $arg) 
            if (gettype($arg) == 'string') if ($arg == 'noEcho')  $doEcho = FALSE; $sb = preg_replace('/(preDump: )[0-9]+/', 'preDump: '.(count($args)-1), $sb); continue; 
            $sb .= '<pre data-type="'.gettype($arg).'"';
            switch (gettype($arg)) 
                case "boolean":
                case "integer":
                    $sb .= ' data-dump="json_encode"><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')</b></p><p>';
                    $sb .= json_encode($arg);
                    break;
                case "string":
                    $sb .= ' data-dump="echo"><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')</b></p><p>';
                    $sb .= $arg;
                    break;
                default:
                    $sb .= ' data-dump="var_dump"';
                    if (is_object($arg)) $sb .= 'data-class="'.get_class($arg).'"';
                    $sb .= '><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')';
                    if (is_object($arg)) $sb .= ' ['.get_class($arg).']';
                    $sb .= '</b></p><p>';
                    ob_start();
                    var_dump($arg);
                    $sb .= ob_get_clean();
                    if (ob_get_length()) ob_end_clean();
            
            $sb .= '</p></pre>';
        
        $sb .= '</fieldset></div>';
    
    else 
        $sb = '<div style="margin: 1em 0;"><fieldset style="display:inline-block;"><legend><b>preDump: [ERROR]</b></legend><h3>No Parameters Found</h3></fieldset></div>';
    
    if ($doEcho) echo($sb);
    return $sb;

如果您使用 Codeigniter,请将其添加到您的 CI 中,非常简单。首先,转到application/config/autoload.php 并确保helper 'string' 已打开。

$autoload['helper'] = array( 'string' ); 

然后只需在application/helpers 中创建一个名为MY_string_helper.php 的文件,然后简单地将函数插入到典型的if 语句中以进行存在检查。

<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
    if (!function_exists('preDump')) 
        function preDump() 
            ...
        
    
//  DON'T CLOSE PHP

|OR|,如果你想换个方向。

下面的 sn-p 和上面的一样,除了会在浏览器控制台中显示你的变量。这有时可以更容易地调试 sql 对象调用以及其他缺少键名或其他内容的数组和对象调用。

function consoleDump()     //  use string "noEcho" to just get a string return only
    $args = func_get_args();
    $doEcho = TRUE; $sb;
    if ($args) 
        $sb = '<script type="text/javascript">console.log("<" + new Array('.(count($args) < 10 ? '49': '48').').join("-") + "[consoleDump: '.count($args).' items]" + new Array(50).join("-") + ">"); console.log([';

        foreach (func_get_args() as $i => $arg) 
            if (gettype($arg) == 'string') if ($arg == 'noEcho')  $doEcho = FALSE; $sb = preg_replace('/(consoleDump: )[0-9]+/', 'consoleDump: '.(count($args)-1), $sb); continue; 
            $sb .= ' "type": "'.gettype($arg).'", ';
            switch (gettype($arg)) 
                case "boolean":
                case "integer":
                case "string":
                    $sb .= '"value": '.json_encode($arg);
                    break;
                default:
                    $sb .= '"value": '.json_encode($arg);
                    if (is_object($arg) || is_array($arg)) $sb .= ', "count": '.json_encode(count((array)$arg));
                    if (is_object($arg)) $sb .= ', "objectClass": "'.get_class($arg).'"';
            
            $sb .= '';
            if ($i < count($args)-1) $sb .= ', ';
        
        $sb .= ']); console.log("<" + new Array(120).join("-") + ">"); </script>';
    
    else 
        $sb = '<script type="text/javascript">console.log("<" + new Array(120).join("-") + ">");console.log("consoleDump: [ERROR] No Parameters Found");console.log("<" + new Array(120).join("-") + ">");</script>';
    
    if ($doEcho) echo($sb);
    return $sb;

适用于一切!

consoleDump($simpXMLvar, $_SESSION, TRUE, NULL, array( 'one' => 'bob', 'two' => 'bill' ), (object)array( 'one' => 'bob', 'two' => 'bill' ));


<------------------------------------------------[consoleDump: 6 items]------------------------------------------------->
[Object, Object, Object, Object, Object, Object] 
// This drops down to show your variables in JS objects, like:
    0: Object
        count: 4
        objectClass: "SimpleXMLElement"
        type: "object"
        value: Object
        __proto__: Object
        // ...etc...
<-----------------------------------------------------------------------------------------------------------------------> 

【讨论】:

为什么要担心开发工具的性能下降可以忽略不计?这个函数实际上是echo '&lt;pre&gt;';var_dump($var);echo '&lt;/pre&gt;';加上一些零值添加文本。 @Raveren 是的,除了preDump('value', TRUE, array( 'bob =&gt; 'bill' ), (object)array( 'bob =&gt; 'bill' )' is quick and easy and gives a nice layout visually in the browser that shows each variable passed in it's own "area" with a type label, thus making debugging quick and easy. And since it's a snippet i keep in my IDE's toolbox, i can recall it with ease on any needed page or while working with any library. But sure, it's just an echo 'pre'; var_dump` 周围有一些 simple html,而不是 0 值添加文本。大声笑。如果您不喜欢它,请不要使用它。只是一个建议。 @Raveren 如果你喜欢……你会非常喜欢我的更新:P【参考方案14】:

如果您在 PHP 中处理非常大的数组,这个函数可能会有所帮助:

function recursive_print ($varname, $varval) 
  if (! is_array($varval)):
    print $varname . ' = ' . var_export($varval, true) . ";<br>\n";
  else:
    print $varname . " = array();<br>\n";
    foreach ($varval as $key => $val):
      recursive_print ($varname . "[" . var_export($key, true) . "]", $val);
    endforeach;
  endif;

它基本上会转储整个数组,其中每个元素位于单独的行中,这有利于为某些元素找到正确的完整路径。

示例输出:

$a = array();
$a[0] = 1;
$a[1] = 2;
$a[2] = array();
$a[2][0] = 'a';
$a[2][1] = 'b';
$a[2][2] = 'c';

见:How to export PHP array where each key-value pair is in separate line?

【讨论】:

【参考方案15】:

另一个选择是

composer require symfony/var-dumper --save-dev

然后在你的文件中你只需使用dump($var) 你最终会得到像这样的输出

【讨论】:

【参考方案16】:

我编写了类似于 Krumo 的小类,但更容易嵌入到应用程序中。

这里是链接:https://github.com/langpavel/PhpSkelet/blob/master/Classes/Debug.php

这里是示例输出:http://langpavel.php5.cz/debug_sample.html

【讨论】:

演示坏了,虽然代码在 GitHub 上可以找到【参考方案17】:

PHP 数组美化器 这个简单的工具采用 PHP 中的数组或对象输出,例如 print_r() 语句,并将其格式化为颜色编码,以便轻松读取数据。 http://phillihp.com/toolz/php-array-beautifier/

【讨论】:

不适用于 var_dump 输出,中断引号,对于更大的转储看起来非常混乱。【参考方案18】:

又一个国产版本:

http://github.com/perchten/neat_html

我认为它非常灵活。它不针对特定的输出环境,但有一堆可选参数,您可以指定更改输出/打印或行为的原因,以及一些持久设置。

【讨论】:

【参考方案19】:

这是我为解决此问题而编写的一个 chrome 扩展。

https://chrome.google.com/webstore/detail/varmasterpiece/chfhddogiigmfpkcmgfpolalagdcamkl

【讨论】:

【参考方案20】:

为了美化var_dumps,我开发了一个chrome扩展和jquery plugin

https://github.com/netfox01/fleX-debug

【讨论】:

【参考方案21】:

我很惊讶没有人提到最简单(尽管不是很漂亮)的代码。如果您只是想获得可读的输出(没有颜色或缩进),一个简单的 &lt;pre&gt; 围绕 var_dump 可以工作,如下所示:

echo "<pre>";
var_dump($myvariable);
echo "</pre>";

没有比这更低的开销了!

【讨论】:

【参考方案22】:

我不得不在这里添加另一个答案,因为我真的不想完成其他解决方案中的步骤。它非常简单,不需要扩展、包含等,是我喜欢的。这非常简单且非常快速。

首先对有问题的变量进行 json_encode:

echo json_encode($theResult);

将您在http://jsoneditoronline.org/ 获得的结果复制到 JSON 编辑器中,只需将其复制到左侧窗格中,单击 复制 >,它就会以非常漂亮的树格式打印 JSON。

每个人都有自己的想法,但希望这可以帮助其他人有一个更好的选择! :)

【讨论】:

【参考方案23】:

我的首选是来自https://github.com/hazardland/debug.php 的 debug,它是一个只包含一个名为 debug 的函数的库(您可以将该函数复制到您的项目中或在您的图书馆中)。典型的 debug() html 输出如下所示:

但是您也可以像这样将数据输出为具有相同功能的纯文本(带有 4 个空格缩进制表符)(甚至在需要时将其记录到文件中):

string : "Test string"
boolean : true
integer : 17
float : 9.99
array (array)
    bob : "alice"
    1 : 5
    2 : 1.4
object (test2)
    another (test3)
        string1 : "3d level"
        string2 : "123"
        complicated (test4)
            enough : "Level 4"

【讨论】:

【参考方案24】:

TVarDumper

这是一个很棒的工具,旨在替换有缺陷的 PHP 函数 var_dumpprint_r,因为它可以正确识别复杂对象结构中递归引用的对象。它还具有递归深度控制,以避免某些特殊变量的无限递归显示。

请参阅:TVarDumper.php


对于比var_dumpprint_r 提供更多优势并且可以支持循环引用的其他替代解决方案,请查看:Using print_r and var_dump with circular reference。


更多想法,请查看:How do you debug PHP scripts?

【讨论】:

【参考方案25】:

我的,更简单,对我来说,我没有很多知识/时间来更改基础设施安装 xdebug 等。

在其他情况下,例如,您不需要太多简单的 WP 网站

所以我使用:

highlight_string("\n<?" . var_export($var, true) . "?>\n");

这对我帮助很大。

但因为我更喜欢 DevConsole 环境,所以我使用了这个很棒但简单的功能:

https://codeinphp.github.io/post/outputting-php-to-browser-console/

小调整:

<?php 

/**
 * Logs messages/variables/data to browser console from within php
 *
 * @param $name: message to be shown for optional data/vars
 * @param $data: variable (scalar/mixed) arrays/objects, etc to be logged
 * @param $jsEval: whether to apply JS eval() to arrays/objects
 *
 * @return none
 * @author Sarfraz
 */
function logConsole($name, $data = NULL, $jsEval = FALSE)

     if (! $name) return false;

     $isevaled = false;
     $type = ($data || gettype($data)) ? 'Type: ' . gettype($data) : '';

     if ($jsEval && (is_array($data) || is_object($data)))
     
          $data = 'eval(' . preg_replace('#[\s\r\n\t\0\x0B]+#', '', json_encode($data)) . ')';
          $isevaled = true;
     
     else
     
          $data = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
     

     # sanitalize
     $data = $data ? $data : '';
     $search_array = array("#'#", '#""#', "#''#", "#\n#", "#\r\n#");
     $replace_array = array('"', '', '', '\\n', '\\n');
     $data = preg_replace($search_array,  $replace_array, $data);
     $data = ltrim(rtrim($data, '"'), '"');
     $data = $isevaled ? $data : ($data[0] === "'") ? $data : "'" . $data . "'";

$js = <<<JSCODE
\n<script>
// fallback - to deal with IE (or browsers that don't have console)
if (! window.console) console = ;
console.log = console.log || function(name, data);
// end of fallback

console.log('===== PHP Dump =====');
console.log('$name');
console.log('$type');
console.log($data);
console.log('===== / PHP Dump =====');
console.log('\\n');
</script>
JSCODE;

     echo $js;
 # end logConsole

【讨论】:

以上是关于PHP 中更漂亮/信息更丰富的 Var_dump 替代方案? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能用intellij在javascript中更漂亮的模板文字

VS代码/w。在 TypeScript Monorepo 中更漂亮

如何停止 node_modules 中更漂亮的依赖项覆盖项目 .prettierrc?

php-echo,print,print_r.var_dump

让 var_dump 看起来很漂亮

PHP var_dump() 函数