如何编写自己的DD()函数,与Laravel相同?

28

我曾长时间使用laravel,但目前我使用wordpress。我喜欢使用laravel的DD()函数。 但在wordpress中,我只能使用以下函数,

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

它的功能很好,但我需要一种有样式和组织的列表形式。

这是否可能?


4
为什么要重复造轮子?https://packagist.org/packages/symfony/var-dumper - Rajender Joshi
2
@RajenderJoshi 有时候你想要一条橡胶轮胎而不是木头或石头做的。Laravel仅使用varDumper进行格式化 - 行为有点不同,因为在转储数据后执行不会停止。 - Coloured Panda
在我的情况下,我需要将dd()作为静态文件而不是Composer包,因为遗留应用程序否则会破坏(因为它会多次调用自动加载程序)。 - Sliq
16个回答

1

@coloured-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);
    }
}

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

0

这是最简单的解决方案:

if(!function_exists('dd'))
{
    function dd( $result )
    {
        echo '<pre>'; print_r($result); die();
    }
}

0

您可以使用mp091689/dump-die包,然后可以执行以下操作:

dd($variable);

或者

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

0
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();
    }

}

0
我使用以下这个。从Jeffrey Way那里学到的:
function dd($data)
{
    echo "<pre>";
        var_dump($data);
    echo "</pre>";

    die();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接