2017-01-16 3 views
2

나는 오래 동안 laravel을 사용합니다. 현재 나는 wordpress에서 일하고있다. 나는 laravel의 DD() 기능을 사용하는 것을 좋아했습니다. laravel과 같은 DD() 함수를 작성하는 방법은 무엇입니까?

하지만 만이 사용할 수 있습니다 워드 프레스에

,

print_r(), 
    var_dump(), 
    var_export().... 

이 모두는 전체 배열을 또는 객체을 확장하고 있습니다.

하지만 laravel의 확장닫기 배열 및 개체 처리 메커니즘이 필요합니다.

가 나는, 일반 DD 필요로 다음 사용

if (!function_exists('dd')) { 
function dd() 
    { 
     echo '<pre>'; 
     array_map(function($x) { var_dump($x); }, func_get_args()); 
     die; 
    } 
} 

그것은 잘 작동하지만, 나는 스타일 및 목록의 형태를 조직 필요가 없다.

가능합니까?

+1

왜 바퀴를 재발 명합니까? https : // packagist.org/packages/symfony/var-dumper –

+0

@RajenderJoshi 때로는 나무 나 돌로 만든 고무 대신에 고무 타이어를 원합니다. Laravel은 형식 지정에만 varDumper를 사용합니다. 동작은 데이터를 덤프 한 후에 실행이 중지되지 않기 때문에 _kind of_ different입니다. – Kaspars

답변

1

Laravel dd은 실제로 큰 기능입니다. 그러나 진행중인 메커니즘은 var_dump이고 그 다음은 die입니다.

예 :

$arr = [1,2,3,4,5,6]; 
var_dump($arr); 
die(); 
+0

예, 맞습니다. 그러나 그것의 스키마는 무엇입니까. 그것은 전체 배열을 정교하지 않습니다. 경우에 따라 배열이 너무 클 수 있습니다. 그런 경우에는 사용할 수 없습니다. 그러나 laravel은 접어서이 문제를 최소화하는 몇 가지 일을합니다. –

+0

당신은'var_dump()'가 갈 깊이를 설정할 수 있습니다. 나는 (php.ini에있을 수 있다고 생각하는) 방법을 기억하지 못한다. – lenswipe

1

Laravel의 dd 심포니의 VarDump component 사용합니다. 그러면 출력 형식을 지정하는 전 세계에서 사용할 수있는 dump 함수가 생깁니다. 유일한 차이점은 덤프 후에 "죽지"않는다는 것인데, 수동으로해야 할 것입니다. 그러나 대부분의 경우 그것은 당신이 원하는 것조차도 아닙니다.

  1. 실행 composer global require symfony/var-dumper
  2. 이 php.ini 파일에 auto_prepend_file = ${HOME}/.composer/vendor/autoload.php 추가 (당신이 당신의 워드 프레스 프로젝트에서 작곡가를 가정);
  3. 최신 버그 수정을 위해 수시로 composer global update symfony/var-dumper을 실행하십시오.

다음은 VarDumper 구성 요소에 대한 설명서입니다. https://symfony.com/doc/current/components/var_dumper.html

그래서 dd 기능은 다음과 같을 수 있습니다 : DD()처럼 Laravel에 관심을 가질만한 다른 사람을 위해

if (!function_exists('dd')) { 
    function dd() 
    { 
     array_map(function($x) { 
      dump($x); 
     }, func_get_args()); 
     die; 
    } 
} 
2

당신은 할 수 있습니다 클래스 이름 공간을 use Illuminate\Support\Debug\Dumper;으로 가져 와서 다음과 같이 변수에 사용하십시오.

(new Dumper)->dump($myVariable); 
2

다음은 제 코드입니다. 일반 PHP (프레임 워크 없음)에서 작동 할 수 있습니다.

function d($data){ 
    if(is_null($data)){ 
     $str = "<i>NULL</i>"; 
    }elseif($data == ""){ 
     $str = "<i>Empty</i>"; 
    }elseif(is_array($data)){ 
     if(count($data) == 0){ 
      $str = "<i>Empty array.</i>"; 
     }else{ 
      $str = "<table style=\"border-bottom:0px solid #000;\" cellpadding=\"0\" cellspacing=\"0\">"; 
      foreach ($data as $key => $value) { 
       $str .= "<tr><td style=\"background-color:#008B8B; color:#FFF;border:1px solid #000;\">" . $key . "</td><td style=\"border:1px solid #000;\">" . d($value) . "</td></tr>"; 
      } 
      $str .= "</table>"; 
     } 
    }elseif(is_resource($data)){ 
     while($arr = mysql_fetch_array($data)){ 
      $data_array[] = $arr; 
     } 
     $str = d($data_array); 
    }elseif(is_object($data)){ 
     $str = d(get_object_vars($data)); 
    }elseif(is_bool($data)){ 
     $str = "<i>" . ($data ? "True" : "False") . "</i>"; 
    }else{ 
     $str = $data; 
     $str = preg_replace("/\n/", "<br>\n", $str); 
    } 
    return $str; 
} 

function dnl($data){ 
    echo d($data) . "<br>\n"; 
} 

function dd($data){ 
    echo dnl($data); 
    exit; 
} 

function ddt($message = ""){ 
    echo "[" . date("Y/m/d H:i:s") . "]" . $message . "<br>\n"; 
} 
관련 문제