programing

larabel과 같은 자체 DD() 함수를 쓰는 방법은 무엇입니까?

linuxpc 2023. 4. 1. 08:30
반응형

larabel과 같은 자체 DD() 함수를 쓰는 방법은 무엇입니까?

저는 오랫동안 라라벨을 사용했지만 지금은 워드프레스를 사용하고 있습니다.나는 라라벨을 사용하는 것을 좋아했다.DD()기능.하지만 워드프레스에서는 이것만 쓸 수 있어요

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

이 모든 것은 어레이 전체 또는 객체 확장일 뿐입니다.하지만 어레이와 오브젝트를 처리하기 위해서는 라라벨의 확장폐쇄 메커니즘이 필요합니다.나는 일반적인 dd 니즈로 다음을 사용한다.

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

그것은 잘 작동하지만, 나는 스타일리시하고 조직적인 형태의 리스트가 필요하다.

가능합니까?

라라벨스dd는 symfony의 VarDump 구성 요소를 사용합니다.글로벌하게 이용할 수 있는dump출력 형식을 지정하는 함수입니다.유일한 차이점은 쓰레기 처리 후 "죽지 않는다"는 것입니다. 하지만 대부분의 경우 그것은 여러분이 원하지도 않는 것입니다.

  1. 달려.composer global require symfony/var-dumper(워드프레스 프로젝트에 작곡가가 있어야 함)
  2. 더하다auto_prepend_file = ${HOME}/.composer/vendor/autoload.phpphp.ini 파일에 저장;
  3. 때때로 실행한다.composer global update symfony/var-dumper최신 버그 수정이 필요합니다.

다음은 VarDumper 컴포넌트의 매뉴얼입니다.https://symfony.com/doc/current/components/var_dumper.html

symfony/var-buffer 버전 > = 4.1:

var-dumper 버전 4.1 이후dd()는 이미 선언되어 있습니다.라이브러리를 로드하는 것으로 충분합니다.


버전 <= 4.0:

선언하다dd함수, 모든 인수를 덤프하고 프로세스를 정지합니다.

if (!function_exists('dd')) {
    function dd()
    {
        foreach (func_get_args() as $x) {
            dump($x);
        }
        die;
    }
 }

더 많은 기능과 최신 코드를 업데이트했습니다.ddebug functions 패키지의 함수를 나타냅니다.

(아래 답변은 약 1년 전입니다.)

======================================

아래는 저만의 코드입니다.플레인 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";
}

dd()와 같이 Larabel에 관심이 있는 분은 이 레포(repo)를 확인해 주세요.

https://github.com/wanfeiyy/laravel-dd

라라벨dd정말 좋은 기능이에요.그러나 현재 진행 중인 메커니즘은var_dump그리고 나서.die.

예:

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

composer는 --dev symfony/var-symplonyper

<?php     
if (! function_exists('dd')) {
            /**
             * Dump the passed variables and end the script.
             *
             * @param  mixed
             * @return void
             */
            function dd()
            {
                array_map(function ($value) {
                    if (class_exists(Symfony\Component\VarDumper\Dumper\CliDumper::class)) {
                        $dumper = 'cli' === PHP_SAPI ?
                            new Symfony\Component\VarDumper\Dumper\CliDumper :
                            new Symfony\Component\VarDumper\Dumper\HtmlDumper;
                        $dumper->dump((new Symfony\Component\VarDumper\Cloner\VarCloner)->cloneVar($value));
                    } else {
                        var_dump($value);
                    }
                }, func_get_args());
                die(1);
            }
        }

?>

클래스에 이 네임스페이스를 가져올 수 있습니다.use Illuminate\Support\Debug\Dumper;변수에 대해 다음과 같이 사용합니다.

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

저는 이렇게 합니다.

function dd($var){ 
    echo "<pre>";
    print_r($var);
    exit;
}

저는 이렇게 합니다.

function dd($a){
    var_dump($a);
    exit;
}

항상 쓰고 있어요.심지어 Sublime에 조각도 만들어놨어.

또한 var_masterpiece Chrome 확장 기능을 사용하여 어레이 키를 확장하거나 축소할 수 있습니다.

마법처럼 효과가 있어요.

function dd()
{
   array_map(function($x) { var_dump($x); }, func_get_args()); die;
}

대부분의 시간 동안 라라벨 프레임워크로 작업하고 있습니다.dd()도우미 방법은 매우 어려운 도구가 됩니다.

3에는 Symfony 3.4를 사용합니다.dump($my_vars); die();내 대표팀을 차서 죽여야만 했어하지만 그것은 곧 매우 이해하기 쉬워졌다.symfony 3.4 프로젝트에 dd() global helper 메서드를 추가했습니다.다음은 예를 제시하겠습니다.

src/i created 내가 i folder 。Support/ 「」의 내부, 「」의Support/i created 내가 i folder 。helpers.php파일에는 덤프 도우미 기능이 추가되어 있습니다.

src/지원/도움말php

if (!function_exists('dd')) {

    /**
     * Dump the passed variables and end the script.
     *
     * @return void
     */
    function dd() {

        $args = func_get_args();

        call_user_func_array('dump', $args);

        die(1);
    }
}

파일파일을 해야 할 도 있습니다.helpers.php에 접속합니다.composer.json하다

composer.json

{
    ...

    "autoload": {
        "psr-4": {
            "App\\": "src/"
        },
        "files": [
            "src/Support/helpers.php"
        ]
    },

    ...
}

@colored-panda 답변은 더 이상 작동하지 않습니다.업데이트된 코드는 다음과 같습니다.

use Symfony\Component\VarDumper\VarDumper;

if (! function_exists('dd')) {
    /**
     * Dump the passed variables and end the script.
     *
     * @param  mixed  $vars
     * @return void
     */
    function dd(...$vars)
    {
        header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Methods: *');
        header('Access-Control-Allow-Headers: *');
        http_response_code(500);

        foreach ($vars as $v) {
            VarDumper::dump($v);
        }

        die(1);
    }
}

패키지 mp091689/dump-die를 사용하면 다음 작업을 수행할 수 있습니다.

dd($variable);

또는

dd($variable1, $variable2, ..);

가장 간단한 해결책은 다음과 같습니다.

if(!function_exists('dd'))
{
    function dd( $result )
    {
        echo '<pre>'; print_r($result); die();
    }
}
if(!function_exists('dd')) { 
    function dd($arrayData, $exit=TRUE) {
        echo "<pre>"; print_r($arrayData);
        if($exit===TRUE) die();
    }
}

언급URL : https://stackoverflow.com/questions/41669246/how-to-write-own-dd-function-same-as-laravel

반응형