Laravel 輔助函式 dd 加強篇 函式包 2020-02-03

asundust發表於2018-09-04

看到站內兩個大神的文章PHP 全域性使用 Laravel 輔助函式 dd更好的 Debug 函式 dd => dda有所啟發,才寫下這篇文章。

第一次寫文章,如果有哪裡不對的地方,請指出,謝謝各位。

2020-02-03更新:函式現已開發成擴充套件包 包地址 GITHUB地址

composer require asundust/helpers

2019-08-28更新:①增加了移動端適配的列印;②由於Laravel5.7框架開始移除了\Illuminate\Support\Debug\Dumper類,換成了Symfony\Component\VarDumper\VarDumper類,目前在Laravel5.7下也是相容的。

我們都知道在Laravel的時候使用dd()除錯很方便,但是我們有時候需要的並非Eloquent資料而是需要一個陣列形式的。
而且dd()函式原本是支援多個變數傳入的。

在研究了上面兩個文章後,自己有需要輕量級的方便列印而又不破壞dd原本的含義情況下的加強版。程式碼如下:

if (!function_exists('da')) {
    /**
     * dd列印封裝 不斷點
     * 如果能轉成toArray()則轉成陣列
     *
     * @param  mixed  $args
     */
    function da(...$args)
    {
        $varDumper = new Symfony\Component\VarDumper\VarDumper;
        foreach ($args as $x) {
            if (method_exists($x, 'toArray')) {
                $x = $x->toArray();
            }
            $varDumper->dump($x);
        }

    }
}

if (!function_exists('dad')) {
    /**
     * dd列印封裝 並斷點
     * 如果能轉成toArray()則轉成陣列
     *
     * @param  mixed  $args
     */
    function dad(...$args)
    {
        da(...$args);
        die(1);
    }
}

if (!function_exists('ma')) {
    /**
     * 移動版dd列印封裝 不斷點
     * 如果能轉成toArray()則轉成陣列
     *
     * @param  mixed  $args
     */
    function ma(...$args)
    {
        echo '<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">';
        da(...$args);
    }
}

if (!function_exists('mad')) {
    /**
     * 移動版dd列印封裝 並斷點
     * 如果能轉成toArray()則轉成陣列
     *
     * @param  mixed  $args
     */
    function mad(...$args)
    {
        ma(...$args);
        die(1);
    }
}
  • da()姑且稱為dump()toArray()的簡寫。
  • dad()姑且稱為dump()toArray()die()的簡寫。
  • ma()姑且稱為移動端toArray()的簡寫。
  • mad()姑且稱為移動端toArray()die()的簡寫。

如有哪裡不對,請各位指出。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章