PHP에서 더 예쁘고 유익한 Var_dump 대안? [닫은]


130

모든 괜찮은 PHP 프로그래머가있다 print_r또는 var_dump그들에게 사랑과 할당 바로 가기 키를 사용하여 랩퍼, 우리는 왜하지 않는 우리의 마음에 드는 사람을 공유 .


39
나는 단지 echo '<pre>'; print_r ($ var); exit; 나는 그것을 닫지 않습니다. 나는 내가 괜찮지 않은 것 같아요
Funky Dude

Kint 개발을 계속하는 github를 가리 키도록 링크를 편집했으며 여전히 문제가있는 경우 어떤 방법 으로든 알려주십시오.
raveren

1
킨트는 멋지다! 방금 저의 하루를 구했습니다.
István Ujj-Mészáros

2
질문이 100 % 인 이유는 무엇입니까? 프로그램의 광고 통지가 "내 자신의 var_dump ()"버전으로 만들어지고 있는가 ?? 첫 번째 질문은 제품 광고가 질문으로 허용되는 이유입니다.
m3nda

11
질문을 한 후 1 년 이상이 도구를 만들었 기 때문입니다. 귀찮게하는 것이 무엇인지 모르겠지만 10k + 라인 성숙 오픈 소스 도구를 개발했으며 몇 년 후 지속적으로 개선하고 있습니다. SO의 전통과 마찬가지로 질문에 나 자신의 대답을 제공했습니다.
raveren

답변:


70

이 질문을 한 후 1 년의 시간과 노력을 들여 마침내 var_dump, Kint 버전을 공개했습니다. 프로젝트 페이지 또는 github에서 직접 읽어보십시오 .

스크린 샷은 다음과 같습니다.

매듭

플러그 죄송합니다 :)


편집 : 나는 의견을 말하고 싶습니다. 지원 포럼이 아닙니다 . 문제가 있거나 기능이 필요 하면 문제를 제기하십시오 . 의견 요청 지원 삭제 플래그가 지정됩니다.


나는 폰트 크기를 변경하고 CSS 코드를 아름답게해야했다. 그러나 좋은 일, 나는 그것을 좋아한다 ... 오랜 시간이
왔다 Krumo

1
어떤 변화를 주 었는지, 그것이 개선이라고 믿는다면, raveren@gmail.com으로 저에게 변화를 보낼 수 있습니다
raveren

나는 Krumo에 익숙했고 더 작은 글꼴을 원했고 CSS 코드를 아름답게했습니다. 오래된 습관처럼 실제 개선이라고 할 수있는 것은 없습니다 :)
Quamis

아이디어는 CSS가 js와 함께 압축되어 가능한 한 실제 출력을 방해하지 않아야한다는 생각이었습니다. 물론, 생성 된 소스의 들여 쓰기도 계획되었지만 현재는 Kint.에 헌신 할 시간이 없습니다.
raveren

2
예를 들어, Kint는 객체를 덤프하면 보호 및 개인 변수를 표시하지만 krumo는 그렇지 않습니다 (이전에만 반사 클래스를 사용하기 때문에). 일반적으로 말하자면 Kint가 우수하다는 것을 알았습니다. 나는 또한 CSS를 더 유용하게 만들기 위해 조정해야했지만 (많은 중첩 된 속성을 덤프 할 때 거대한 글꼴이 잘 작동하지 않습니다). 아 그리고 그 뒤에있는 코드는 엉망이 아닙니다. Krumo에 대해 말할 수없는 것 (죄송합니다. Krumo author!)
Mahn

45

내는 IS에 선호 var_dump, 기능 Xdebug는 확장에 의해 제공 : 단지 확장 설치 (쉬운 모두 윈도우와 리눅스)를 , 그리고 var_dump더 나은 결과를 가져옵니다

  • 더 나은 형식
    • HTML
    • 그림 물감
  • 표시해야 할 정보의 양을 조정할 수있는 옵션이 있습니다

그리고 빠른 스크린 샷 :

xdebug


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


1
이 xdebug 형식 클래스를 공유 호스트에서 사용해야합니다. 개인 프로젝트에 포함시킬 방법이 있습니까?
Anyul Rivas

1
서버의 관리자 (루트)가 아닌 경우, PHP 확장을 설치할 수 없을 것입니다 ( PHP 확장을 설치하기 위한 공유 호스팅 서비스를 본 적이 없습니다) . 따라서 Xdebug를 사용할 수 없습니다 (어쨌든 프로덕션 서버에 설치하는 것은 좋은 생각이 아닙니다. 결국 디버깅 확장입니다) . 변수 출력 함수의 PHP 기반 구현으로 돌아 가야합니다 (다른 답변 참조)
Pascal MARTIN

1
예, 오류가 발생할 때 출력을 보내려면 클래스가 필요했습니다.
Anyul Rivas

34

나는 내 자신을 썼다 : REF ( demo ) :

r () 출력

텍스트 전용 렌더링을 추가하고 Kint와 같은 입력 식에 대한 정보를 표시합니다.


4
잘 했어, 아주 좋은 도구
ssuperczynski

2
REF는 훌륭하고 다채롭고 빠릅니다. 나는 항상 그것을 사용합니다.
Marty McGee

2
훌륭한 도구, 방금 전환했습니다. 감사!
Andris

소수의 사람들은 작곡가를 사용합니다. 당신이를 만들려면 dll이 "디버그"를 사용합니다. 고마워, 잘 했어!
Alex

27

다음은 인라인을 사용하는 매우 유용한 광산입니다.

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

2
이 기능을 좋아하십시오-쉽고 명확하며 아주 쉽게 언급했습니다 :)
derekdreery

감사. 나는 항상 그것을 사용합니다. 실제로 PHP에 내장해야합니다. 두 번째 매개 변수를 사용하여 고유 한 형식을 지정할 수 있습니다. 예를 들어 echo $ pretty ($ some_variable, "-");
기예르모 필립스

7
이것은 print_r, var_dump 및 var_export의 모든 최악의 기능을 아름답게 결합합니다 . html 이스케이프 없음, 단일 매개 변수 만 허용, 재귀를 멈추고 출력을 반환 할 수 없으며 그 위에는 완전히 읽을 수 없습니다 . 나는 멍청한 사람이되고 싶지 않지만 의견은 너무 완벽하게 보입니다.
raveren

귀하의 의견에 감사드립니다 @Raveren. 좀 더 구체적으로 말할 수 있다면 대답을 향상시킬 것입니다.
기예르모 필립스

2
최고의 단일 회선 솔루션 인 IMO는 간단 function pretty(){echo'<pre>';foreach(func_get_args()as $arg){ob_start();var_dump($arg);echo htmlentities(ob_get_clean())."\n#####\n#####\n\n";}die;}합니다. Var_dump는 매우 장황한 함수로, 모든 PHP 엣지 케이스 (LOTS가있는 경우)를 처리하며 읽을 수는 없지만 100 % 안정적입니다. 그러나 하루가 끝나면 구현이 자신에게 가장 적합한 것을 발견하면 반드시 사용해야합니다.
raveren

16

Krumo를 찾고 있습니다 ( 경고, Chrome은 Malware 알림 ).

간단히 말해 Krumo는 print_r () 및 var_dump ()를 대체합니다. 정의에 따르면 Krumo는 모든 PHP 변수에 대한 구조화 된 정보를 표시하는 디버깅 도구 (초기 PHP4 / PHP5 용, 현재는 PHP5 전용)입니다.


훌륭합니다! 감사. +1
the_drow

2
내가 그것을 시도했을 때, 그것은 고장났다. 나는 그것을보고했지만, 답글이없고 & 새 버전도 없다
Mawg는 Monica Monica를 복원

2
@Pekka 링크가 Chrome에서 악성 코드 경고를 발생시킵니다.
Tim Post

오늘 krumo이 남자가 업데이트되었습니다 github.com/mmucklo/krumo (그러나 Kint은 더 자세한 내용은있을 수 있습니다)
lolesque

9

나는 Firephp plus firebug를 좋아합니다.

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


8

이에 대한 내 (부분) 솔루션은 단순히 Chrome을 사용하여 다음과 같은 기능을 추가하는 것입니다.

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

Ctrl + Shift + J를 누르면 (콘솔이 열림) JSON 구조가 있습니다. 물론 JSON 응답을 인쇄하는 데 더 유용합니다.


8

내가 사용하는 것의 완전한 예 ...

<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

1
나는 \ n을 PHP_EOL로 바꾸었고 이것은 창의 CMD에서 PHP를 사용할 때 잘 작동합니다
iewebguy

7

여기 내 것이있다 :

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

2
실제로 나쁘지 않습니다. 결과의 예를 보여 주면 더 많은 투표권을 얻었을 것입니다.
Mawg는 모니카

@acSlater 나를 위해 일하기 때문에, sbwDebug게시하고 함수를 넣는 것을 잊어 버린 클래스 를 만들어야 합니다.
Dennis98

6

나는 최근에 무료 크롬 확장 프로그램 (작업 진행 중)을 개발하여 라이브러리, 프리 태그 및 각 앱마다 설치하지 않고 var 덤프를 아름답게했습니다. 모든 것은 JavaScript와 regEx로 이루어집니다. 확장 프로그램과 설치하기 만하면됩니다. Firefox 버전도 작업 중입니다. 여기 GitHub 페이지가 있습니다. 크롬 및 파이어 폭스 웹 스토어에서 곧 사용할 수 있기를 바랍니다.

https://github.com/alexnaspo/var_dumpling

다음은 예제 출력입니다.

출력 예


6
잘 했어! 확장 프로그램을 다운로드하면 완벽하게 작동합니다! 감사!
coryj

5
야 ... 고마워 나는 잠시 동안 이런 걸 찾고 있었어요
브로드

1
언리얼. 아직 최고의 옵션!
Christian

Firefox 15를 사용해 보니 호환되지 않는다고 말했습니다. 이것을 우회 할 기회가 있습니까?
cyberfly

1
이것은 아름답다, 내가 빨리 발견했으면 좋겠다!


2

멋진 라이브러리는 오버 헤드를 제외하고 훌륭합니다. 무한 매개 변수를 사용하는 간단하고 예쁜 var_dump를 원한다면 내 기능을 사용해보십시오. 간단한 HTML을 추가합니다. 데이터 속성도 추가됩니다. HTML5를 사용하는 경우 하위 버전은 무시하지만 브라우저 콘솔에서 요소를 쉽게 열고 화면에 표시되는 정보가 충분하지 않으면 더 많은 정보를 얻을 수 있습니다.

레이아웃은 오버 헤드없이 매우 간단합니다. 오브젝트 덤프 (XML 포함)의 이름 gettypeclass이름을 포함하여 각 매개 변수에 대한 많은 정보를 제공합니다 . 그것은 시도되고 사실이며, 수년 동안 사용해 왔습니다.

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

그리고 단순히라는 이름의 파일을 만들 이동 MY_string_helper.phpapplication/helpers전형적인에서 함수 삽입 간단한을 if생존 확인을 위해 문.

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

다른 방향으로 가져 가려면 | OR |

다음 스 니펫은 브라우저 콘솔에 변수를 표시한다는 점을 제외하고 위와 동일합니다. 이것은 때때로 키 이름 등이 빠진 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...
<-----------------------------------------------------------------------------------------------------------------------> 

1
개발 도구에서 무시할만한 성능 저하에 대해 걱정해야하는 이유는 무엇입니까? 이 함수는 문자 그대로 echo '<pre>';var_dump($var);echo '</pre>';값을 추가하지 않는 텍스트를 더한 것입니다.
raveren

preDump('value', TRUE, array( 'bob => 'bill' ), (object)array( 'bob => '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'를 제외한 @Raveren yea ; simple html0 값을 추가하는 텍스트가 아닌 주변에 var_dump`가 있습니다 . lol kik. 마음에 들지 않으면 사용하지 마십시오. 그냥 제안입니다.
SpYk3HH

@Raveren 그리고 당신이 그것을 좋아한다면 ... 당신은 정말 내 업데이트를 사랑합니다 : P
SpYk3HH





1

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

참조 : 각 키-값 쌍이 별도의 줄에있는 PHP 배열을 내보내는 방법은 무엇입니까?


1

아무도 가장 쉬운 코드는 아니지만 놀랍습니다. 읽을 수있는 출력 (색상 또는 들여 쓰기 없음)을 얻으려면 다음 과 같이 작품 <pre>주위를 간단하게 만드십시오 var_dump.

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

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



0

내가 선호하는 것은 https://github.com/hazardland/debug.php 에서 디버그 입니다. 이것은 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"

0

TVarDumper

이것은 버그가 PHP의 기능을 대체하기위한 것입니다 훌륭한 도구입니다 var_dumpprint_r올바르게 복잡한 객체 구조에서 재귀 적으로 참조 된 개체를 식별 할 수 있기 때문에. 또한 특정 변수의 무한 재귀 표시를 피하기 위해 재귀 깊이 제어 기능이 있습니다.

참조 : TVarDumper.php.


이상 많은 이점을 제공 다른 대안 솔루션 var_dumpprint_r순환 참조를 지원하고, 확인하십시오 : 순환 참조 인 print_r와 위해서 var_dump를 사용 .


더 많은 아이디어를 얻으 려면 PHP 스크립트를 어떻게 디버깅합니까?


0

Mine은 더 간단합니다. 저는 인프라 설치 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

0

다른 옵션은

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

그런 다음 파일에서 방금 사용하면 다음 dump($var) 과 같은 결과가 나타납니다.여기에 이미지 설명을 입력하십시오


0

다른 솔루션의 단계를 실제로 거치고 싶지 않기 때문에 여기에 다른 답변을 추가해야했습니다. 그것은 매우 간단하고 확장명, 포함 등이 필요하지 않으며 내가 선호하는 것입니다. 매우 쉽고 빠릅니다.

먼저 문제의 변수를 json_encode하십시오.

echo json_encode($theResult);

결과를 http://jsoneditoronline.org/ 의 JSON 편집기에 복사하면 왼쪽 창에 복사 하고 복사>를 클릭 하면 JSON이 정말 멋진 트리 형식으로 인쇄됩니다.

각자 자신에게, 그러나 이것은 다른 사람들이 하나 더 좋은 옵션을 갖는 데 도움이되기를 바랍니다. :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.