Reputation: 1795
I used laravel for a long time but currently I work with wordpress. I loved using the laravel's DD()
function.
But in wordpress I can only use these,
print_r(),
var_dump(),
var_export()....
These all are just expand entire array or object. But I need laravel's expand and close mechanism for handling array and object. I use the following as general dd need,
if (!function_exists('dd')) {
function dd()
{
echo '<pre>';
array_map(function($x) {var_dump($x);}, func_get_args());
die;
}
}
It works well, but I need a styled and organised form of listing.
Is it possible ?
Upvotes: 35
Views: 124576
Reputation: 1393
I use the following one. Learned from Jeffrey Way:
function dd($data)
{
echo "<pre>";
var_dump($data);
echo "</pre>";
die();
}
Upvotes: -1
Reputation: 1
if (!function_exists('dd')) {
#[NoReturn] function dd(mixed $data):void
{
echo "<pre style='background:#1d1d1d; color: greenyellow; position:absolute; left: 0; top: 0; z-index: 9999999; width: 100%; height: 600px'>";
print_r($data);
echo '<pre>';
die();
}
}
Upvotes: -1
Reputation: 3467
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.
composer global require symfony/var-dumper
(assuming you have composer in your wordpress project)auto_prepend_file = ${HOME}/.composer/vendor/autoload.php
to your php.ini file;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
symfony/var-dumper version >= 4.1:
Since var-dumper version 4.1, dd()
is already declared. Loading the library is enough.
symfony/var-dumper version <= 4.0:
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;
}
}
Upvotes: 46
Reputation: 1621
if(!function_exists('dd')) {
function dd($arrayData, $exit=TRUE) {
echo "<pre>"; print_r($arrayData);
if($exit===TRUE) die();
}
}
Upvotes: -1
Reputation: 59
Here is the simplest solution:
if(!function_exists('dd'))
{
function dd( $result )
{
echo '<pre>'; print_r($result); die();
}
}
Upvotes: -1
Reputation: 557
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";
}
Upvotes: 23
Reputation: 51
The @coloured-panda answer is not working anymore. Here is the updated code:
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);
}
}
Upvotes: 1
Reputation: 7730
Most of the time i work with laravel framework, when it came to debugging the dd()
helper method become a very handful tool.
But recently i was requested to work on a symfony 3.4 project, at first i use dump($my_vars); die();
to dump and die my vars. But that became quickly very combersome. So i ended up by adding a dd() global helper method to the symfony 3.4 project, here is how:
Inside src/
folder i created Support/
folder, inside of the Support/
folder i created helpers.php
file where i added my dump helper functions.
src/Support/helpers.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);
}
}
You may need to add the new file (helpers.php
) to your composer.json
file to be loaded for you automatically, like this:
composer.json
{
...
"autoload": {
"psr-4": {
"App\\": "src/"
},
"files": [
"src/Support/helpers.php"
]
},
...
}
Upvotes: 1
Reputation: 195
it works like a charm.
function dd()
{
array_map(function($x) { var_dump($x); }, func_get_args()); die;
}
Upvotes: 4
Reputation: 4103
composer require --dev symfony/var-dumper
<?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);
}
}
?>
Upvotes: 5
Reputation: 865
I do like this:
function dd($var){
echo "<pre>";
print_r($var);
exit;
}
Upvotes: 2
Reputation: 296
You can use the package mp091689/dump-die and then you can do:
dd($variable);
OR
dd($variable1, $variable2, ..);
Upvotes: -1
Reputation: 17198
I do it like this:
function dd($a){
var_dump($a);
exit;
}
I use it all the time. Even created a Snippet for it in Sublime.
I also use var_masterpiece Chrome extension to get a nice output, where I can expand and collapse the array keys, etc.
Upvotes: 2
Reputation: 831
You can bring in this namespace in your class use Illuminate\Support\Debug\Dumper;
and then use it for your variables like this:
(new Dumper)->dump($myVariable);
Upvotes: 3
Reputation: 1638
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();
Upvotes: 5