整形 vardump PHPでもっと有益な/有益なVar_dumpの代替?



12 Answers

Xdebugの拡張機能で提供されているvar_dump関数が好きです: WindowsとLinuxの両方で簡単に拡張機能をインストールして、 var_dumpがより良い出力を得ます:

  • より良いフォーメーション
    • HTML
  • どのくらいの情報を表示するかを調整するオプションがあります

そして、簡単なスクリーンショット:


そして、もちろん、Xdebugは、リモートデバッグ(例えば、Eclipse PDTのPHPアプリケーションのグラフィカルなデバッグ) 、プロファイリングなどの他の有用なものをもたらします。

php var_dump きれいに

まともなPHPプログラマは、 print_rまたはvar_dumpラッパーを使用しています。ショートカットキーを愛用し、割り当てることができます。




ここでは私がインラインで使用する非常に便利なものです:

$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);



私はFirephp plus Firephpを愛する

  • それはヘッダーを使ってログ情報を書き出すので、AJAXを壊さない。
  • ログに記録する変数/オブジェクトをグラフィカルに表示します
  • 各ログステートメントが発生するファイル名と行番号を表示できます
  • 手続き型APIまたはオブジェクト指向APIを使用して、プロジェクトで使いやすい



このための私の(部分)解決策は、単にGoogle Chromeを使って次のような関数を追加することです。

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

Ctrl + Shift + J(コンソールを開く)を押すと、そこにJSON構造体があります。 JSONレスポンスのきれいな印刷にさらに便利です。




ここは私です:

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

      if (in_array($type, array('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;
}









PHP Array Beautifierこの単純なツールは、print_r()のようなPHPの配列やオブジェクトの出力を取り込み、色分けしてデータを簡単に読み込みます。 http://phillihp.com/toolz/php-array-beautifier/







私の好みはhttps://github.com/hazardland/debug.phpからのデバッグであり 、これはデバッグとして指定された単一の関数だけを含むライブラリです(あなたのプロジェクトやライブラリにその関数をコピーすることができます) 。 典型的なdebug() htmlの出力は次のようになります。

しかし、同じような機能を持つ平易なテキストとしてデータを出力することもできます(必要に応じてファイルに記録することもできます)。

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"



私のために、もっと簡単なのですが、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



私は一番簡単なコード(非常にきれいではない)は誰も言及していないことに驚いています。 読み込み可能な出力(色や字下げなし)を得たいだけの場合は、次のように、単純な<pre> var_dump動作します:

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

これよりはるかに低いオーバーヘッドを得ることはできません!




Related