더 예쁜 / 유익한 Var_dump PHP의 대안?


Answers

Xdebug 확장에 의해 제공되는 var_dump 함수가 선호됩니다 . Windows와 Linux 모두에서 확장 기능을 설치하기 만하면됩니다. var_dump 는 더 나은 결과를 얻습니다 :

  • 더 나은 포매팅
    • HTML
    • 그림 물감
  • 표시 할 정보의 양을 조정할 수있는 옵션이 있습니다.

그리고 빠른 스크린 샷 :


그리고 물론 Xdebug는 원격 디버깅 (예 : Eclipse PDT에서 PHP 응용 프로그램의 그래픽 디버깅) , 프로파일 링 등과 같은 다른 유용한 기능을 제공합니다 .

Question

괜찮은 PHP 프로그래머는 print_r 또는 var_dump 래퍼를 사용하여 단축키를 지정하고 사랑하고 할당 합니다 . 우리가 좋아하는 것을 공유 하지 않는 것이 어떻습니까?













나는 아무도 가장 쉬운 (아주 예쁜 것은 아니지만) 코드에 대해서는 언급하지 않았다. 읽을 수있는 출력 (색상이나 들여 쓰기 없음)을 얻고 싶다면 다음과 같이 var_dump 주위의 간단한 <pre> 작동합니다 :

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

이것보다 훨씬 낮은 오버 헤드를 얻을 수 없습니다!







PHP Array Beautifier이 간단한 도구는 print_r () 문과 같은 PHP의 배열 또는 객체 출력을 가져 와서 데이터를 쉽게 읽을 수 있도록 색상 코드로 형식을 지정합니다. http://phillihp.com/toolz/php-array-beautifier/




나는 firebug 플러스 firebug 좋아한다.

  • 헤더를 사용하여 로깅 정보를 기록하므로 AJAX가 중단되지 않습니다.
  • 로그하는 변수 / 객체에 대한 아주 멋진 그래픽 표현을 제공합니다.
  • 각 로그 문이 발생하는 곳에 파일 이름과 행 번호를 표시 할 수 있습니다.
  • 프로 시저 또는 객체 지향 API로 프로젝트에서 사용하기 쉽습니다.



여기에 제가 사용하는 인라인인데, 매우 유용합니다 :

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



내가 선호하는 것은 https://github.com/hazardland/debug.php 디버그 로, 디버그 라는 이름의 단일 함수 만 포함하는 라이브러리입니다 (프로젝트 또는 라이브러리에서이 함수를 복사 할 수 있습니다) . 일반적인 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"



여기 내 것이 있습니다 :

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;
}