看到站內兩個大神的文章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 協議》,轉載必須註明作者和本文連結