How to write own DD() function same as laravel? How to write own DD() function same as laravel? php php

How to write own DD() function same as laravel?


Laravel's dd uses symfony's VarDump component. It provides a globally available dump function which formats the output. The only difference is that it won`t "die" after the dump, you'll have to do that manually - but in most cases that isn't even something you'd want.

  1. Run composer global require symfony/var-dumper (assuming you have composer in your wordpress project)
  2. Add auto_prepend_file = ${HOME}/.composer/vendor/autoload.php to your php.ini file;
  3. From time to time, run composer global update symfony/var-dumper to have the latest bug fixes.

Here is the documentation for the VarDumper component. https://symfony.com/doc/current/components/var_dumper.html

Before var-dumpr version 4.1:

Declare a dd function, dumping all arguments and stopping the process:

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

After var-dump version 4.1:

Since var-dumper version 4.1, dd() is already declared. Loading the library is enough.


I updated more functions and latest code of d functions below in debug functions package.

(Below answer is about 1 year ago.)

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

Below is my own code. It can work in plain PHP (no framework).

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


The Laravel dd is actually a great function. However, the undergoing mechanism is var_dump and then die.

Example:

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