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.
- Run
composer global require symfony/var-dumper
(assuming you have composer in your wordpress project) - Add
auto_prepend_file = ${HOME}/.composer/vendor/autoload.php
to your php.ini file; - 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";}