source

var_dump를 예쁘게 꾸미다

gigabyte 2023. 1. 2. 22:38
반응형

var_dump를 예쁘게 꾸미다

심플한 게 있어요$_GET[]DB에서 쿼리를 풀다운할 때 테스트 데이터를 표시하기 위한 쿼리 변수 세트.

<?php if($_GET['test']): ?>
  <div id="test" style="padding: 24px; background: #fff; text-align: center;">  
    <table>
      <tr style="font-weight: bold;"><td>MLS</td></tr>
      <tr><td><?php echo KEY; ?></td></tr>
      <tr style="font-weight: bold;"><td>QUERY</td></tr>
      <tr><td><?php echo $data_q; ?></td></tr>
      <tr style="font-weight: bold;"><td>DATA</td></tr>
      <tr><td><?php var_dump($data); ?></td></tr>
    </table>    
</div>
<?php endif; ?>

할 때var_dump예상대로 이 큰 어레이 문자열이 모두 스매시됩니다.적어도 이것 때문에 줄 바꿈을 추가하거나var_dump더 읽기 쉬운 방법으로요?jQuery가 게시된 후 스트링을 조작하는 방법에 대한 제안을 받아들일 수 있습니다.

나는 정말 사랑한다var_export()복사/붙여넣기 가능한 코드를 원할 경우 다음을 시도해 보십시오.

echo '<pre>' . var_export($data, true) . '</pre>';

또는 색상 구문의 강조 표시에는 다음과 같은 것이 있습니다.

highlight_string("<?php\n\$data =\n" . var_export($data, true) . ";\n?>");

재사용 가능한 기능:

function highlight_array($array, $name = 'var') {
    highlight_string("<?php\n\$$name =\n" . var_export($array, true) . ";\n?>");
}

를 사용하여 동일한 작업을 수행할 수 있습니다.print_r().위해서var_dump()추가만 하면 됩니다.<pre>태그:

echo '<pre>';
var_dump($data);
echo '</pre>';

php의 xdebug 확장을 사용해 보십시오.

예:

<?php var_dump($_SERVER); ?>

출력:

여기에 이미지 설명 입력

미리 포맷된 HTML 요소 사용

    echo '<pre>';
        var_dump($data);
    echo '</pre>';

@AbraCadaver 답변에 추가하겠습니다.php starting 태그와 closing 태그를 삭제하는 javascript 스크립트를 첨부했습니다.우리는 깨끗하고 예쁜 쓰레기장을 갖게 될 것이다.

이런 사람일 수도 있어요

function dd($data){
  highlight_string("<?php\n " . var_export($data, true) . "?>");
  echo '<script>document.getElementsByTagName("code")[0].getElementsByTagName("span")[1].remove() ;document.getElementsByTagName("code")[0].getElementsByTagName("span")[document.getElementsByTagName("code")[0].getElementsByTagName("span").length - 1].remove() ; </script>';
  die();
}

이전 결과:

여기에 이미지 설명 입력

결과:

여기에 이미지 설명 입력

이제 php starting 태그와 closing 태그가 없습니다.

저는 이것을 복제품으로 종결할 충분한 평판이 없는 것 같습니다만, 다른 누군가가 그렇게 할 수 있다면 그럴 것입니다.PHP의 A more pretty/informative Var_dump alternative에도 같은 글을 올렸습니다만, 시간을 절약하기 위해 여기에 복사/붙여넣기를 하겠습니다.

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

먼저 문제의 변수를 json_encode합니다.

echo json_encode($theResult);

http://jsoneditoronline.org/에서 JSON Editor에 결과를 복사하여 왼쪽 페인에 복사하고 [Copy]를 클릭하면 JSON이 매우 멋진 트리 형식으로 인쇄됩니다.

각자에게 맞는 선택이지만, 이것이 다른 사람에게도 좋은 선택지가 하나 더 생기기를 바랍니다. :)

여기 액티브하게 유지 보수되고 있는 대체 오픈 소스가 있습니다.var_dump스테로이드제 복용:

https://github.com/php-sage/sage

제로 셋업으로 동작하며 Xdebug의 var_dump 및 symfony/var-dumper보다 사용하기 편리합니다.

Kint를 사용하여 덤프된 오브젝트 크기 제한을 우회하는 예:

     require 'sage.phar';
     +d( $variable ); // append `+` to the dump call

다음은 스크린샷입니다.

킨트

「모두 스매시」되어 있는 경우는, ol의 「소스 코드 표시」를 시험해 볼 수 있습니다.때때로 덤프, 메시지 및 예외는 줄이 끊어지는 것이 단순히 나타나지 않는 것으로 판명될 때 하나의 긴 끈처럼 보입니다.특히 XML 트리.

또는 Interactive Var Dump라는 작은 도구를 만든 적도 있습니다.물론 한계가 있지만, 때로는 매우 편리할 수도 있습니다.PHP 5를 염두에 두고 설계되어 있습니다만,

nice var_dump를 얻는 가장 쉽고 좋은 방법은 xDebug (모든 php dev에 필수)Debian way install 입니다.

★★★★apt-get install php-xdebug후 /syslog의 /etc/syslog/7.0/fpm/syslog에 phpini 대 php . ini ( php . ini ) 。

(Search(검))display_errors

same - > set동 set> - >display_errors = On

마크를 켜주세요.html_errors'아까부터', '아까부터', '아까부터', '아까부터', '아까부터' 돼요.On

저장 후 종료

후 ★★★★★/etc/php/7.0/fpm/conf.d/20-xdebug.ini

그리고 끝에 추가합니다. " " xdebug . cli _ color = 1

"저장 후 종료합니다.

xdebug에 사용할 수 있는 다른 옵션 및 문서는 여기에서 찾을 수 있습니다.

https://xdebug.org/docs/

행운을 빌고 즐거운 시간 보내세요!!!

결과

돼요debugVar()var_dump()

https://github.com/E1NSER/php-debug-function에서 확인하세요.

여기 예쁜 var_dump를 가질 수 있는 기능이 있습니다.Xdebug와 결합하면 우리가 폐기하는 것을 더 잘 볼 수 있습니다.

Xdebug 표시(주변 공간 확보, 값 구분, 긴 변수 랩 등)를 조금 개선했습니다.

함수를 호출할 때 제목, 배경, 텍스트 색상을 설정하여 페이지 내의 모든 var_dump를 구분할 수 있습니다.

또는 없습니다;)

/**
 * Pretty var_dump 
 * Possibility to set a title, a background-color and a text color
 */ 
function dump($data, $title="", $background="#EEEEEE", $color="#000000"){

    //=== Style  
    echo "  
    <style>
        /* Styling pre tag */
        pre {
            padding:10px 20px;
            white-space: pre-wrap;
            white-space: -moz-pre-wrap;
            white-space: -pre-wrap;
            white-space: -o-pre-wrap;
            word-wrap: break-word;
        }

        /* ===========================
        == To use with XDEBUG 
        =========================== */
        /* Source file */
        pre small:nth-child(1) {
            font-weight: bold;
            font-size: 14px;
            color: #CC0000;
        }
        pre small:nth-child(1)::after {
            content: '';
            position: relative;
            width: 100%;
            height: 20px;
            left: 0;
            display: block;
            clear: both;
        }

        /* Separator */
        pre i::after{
            content: '';
            position: relative;
            width: 100%;
            height: 15px;
            left: 0;
            display: block;
            clear: both;
            border-bottom: 1px solid grey;
        }  
    </style>
    ";

    //=== Content            
    echo "<pre style='background:$background; color:$color; padding:10px 20px; border:2px inset $color'>";
    echo    "<h2>$title</h2>";
            var_dump($data); 
    echo "</pre>";

}
function var_view($var)
{

    ini_set("highlight.keyword", "#a50000;  font-weight: bolder");
    ini_set("highlight.string", "#5825b6; font-weight: lighter; ");

    ob_start();
    highlight_string("<?php\n" . var_export($var, true) . "?>");
    $highlighted_output = ob_get_clean();

    $highlighted_output = str_replace( ["&lt;?php","?&gt;"] , '', $highlighted_output );

    echo $highlighted_output;
    die();
}

Symfony 패키지에는 https://symfony.com/doc/current/components/var_dumper.html가 있습니다.

어레이를 보기 좋게 표시하기 위해 만든 기능은 다음과 같습니다.

function nicevar($var,$title=''){
    if(is_array($var)){
        $table = '<table>';
        if($title){
            $table .= '<tr><th colspan="20">'.$title.'</th></tr>';
        }
        foreach($var as $k => $v){
            $table .= '<tr>';
                $table .= '<td><b>'.$k.'</b></td>';
                $table .= '<td>';
                    if(is_array($v)){
                        $table .= nicevar($v);
                    }else{
                        $table .=  $v;
                    }
                $table .= '</td>';
            $table .= '</tr>';
        }
        $table .= '</table>';
    }else{
        $table = $var;
    }
    return $table;  
}

사용방법:

echo nicevar($_SESSION['debug'],'Structure of debug');

이 스타일을 사용하여 멋있게 연출합니다.

<style>
body {
        padding: 30px;
}

table {
    margin: 5px;
}
table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
}
th {
    background-color: #9fff96;
}
th, td {
  padding: 2px;
  border-spacing: 2px;
}
</style>

CI4에서는 출력을 보다 예쁘게 할 수 있습니다.

dd($this->request);

결과는 이렇다

는 함수함수)를 .debug_display인쇄, 어레이, 오브젝트, 파일 정보를 예쁘게 출력할 수 있습니다.

<?php
function debug_display($var,$show = false) {
    if($show) { $dis = 'block'; }else { $dis = 'none'; }
    ob_start();
    echo '<div style="display:'.$dis.';text-align:left; direction:ltr;"><b>Idea Debug Method : </b>
        <pre>';
    if(is_bool($var)) {
        echo $var === TRUE ? 'Boolean(TRUE)' : 'Boolean(FALSE)';
    }else {
        if(FALSE == empty($var) && $var !== NULL && $var != '0') {
            if(is_array($var)) {
                echo "Number of Indexes: " . count($var) . "\n";
                print_r($var);
            } elseif(is_object($var)) {
                print_r($var);
            } elseif(@is_file($var)){
                $stat = stat($var);
                $perm = substr(sprintf('%o',$stat['mode']), -4);
                $accesstime = gmdate('Y/m/d H:i:s', $stat['atime']);
                $modification = gmdate('Y/m/d H:i:s', $stat['mtime']);
                $change = gmdate('Y/m/d H:i:s', $stat['ctime']);
                echo "
    file path : $var
    file size : {$stat['size']} Byte
    device number : {$stat['dev']}
    permission : {$perm}
    last access time was : {$accesstime}
    last modified time was : {$modification}
    last change time was : {$change}
    ";
            }elseif(is_string($var)) {
                print_r(htmlentities(str_replace("\t", '  ', $var)));
            }  else {
                print_r($var);
            }
        }else {
            echo 'Undefined';
        }
    }
    echo '</pre>
    </div>';
    $output = ob_get_contents();
    ob_end_clean();
    echo $output;
    unset($output);
}

사용하다

echo nl2br(var_dump());

이 방법은 작동해야 합니다 ^^

언급URL : https://stackoverflow.com/questions/19816438/make-var-dump-look-pretty

반응형