日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

php语+言教程,写给thinkphp开发者的laravel系列教程(九)打印数据-Fun言

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php语+言教程,写给thinkphp开发者的laravel系列教程(九)打印数据-Fun言 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

php這種腳本語言調試起來是很方便的;

大多時候看報錯打印一下數據就知道問題所在了;

php 內置了常用打印函數 print 和 var_dump ;

但是打印出來的樣式實在讓人目瞪狗呆;

thinkphp 框架自帶一個 dump 函數;

看過上篇文章的童鞋會懂我的;

除非是需要查看數據的類型等更詳細數據;

否則平常開發我是不用框架的打印函數;

laravel 也是有一個dump 函數的;

這個打印出來就漂亮多了;

跟我那個 p 函數一樣的簡潔而且還帶顏色;

從數據庫取出來的數據是一個 Collection 對象;

如果拿它打印 Collection 那就痛苦了;

默認都是折起來;

需要我們點下箭頭按鈕才會展開;

這里有個小技巧;

ctrl/command+鼠標左鍵點擊下箭頭可以展開全部;

其實大多時候我們只想看 attributes 里面的數據;

作為一個有簡潔癖好的懶人;

讓我每次打印數據都得點擊展開;

而且還顯示一大堆我并不在意的數據;

我是相當不能忍的;

給的再多;不如懂我;

于是在 laravel 中我的 p 函數就升級了;

if (!function_exists('p')) {

// 傳遞數據以易于閱讀的樣式格式化后輸出

function p($data, $toArray = true)

{

// 定義樣式

$str = '

';

// 如果是 boolean 或者 null 直接顯示文字;否則 print

if (is_bool($data)) {

$show_data = $data ? 'true' : 'false';

} elseif (is_null($data)) {

// 如果是null 直接顯示null

$show_data = 'null';

} elseif (is_object($data) && in_array(get_parent_class($data), ['Illuminate\Support\Collection', 'App\Models\Base']) && $toArray) {

// 把一些集合轉成數組形式來查看

$data_array = $data->toArray();

$show_data = '這是被轉成數組的Collection:
' . print_r($data_array, true);

} elseif (is_object($data) && in_array(get_class($data), ['Maatwebsite\Excel\Readers\LaravelExcelReader']) && $toArray) {

// 把一些集合轉成數組形式來查看

$data_array = $data->toArray();

$show_data = '這是被轉成數組的Collection:
' . print_r($data_array, true);

} elseif (is_object($data) && in_array(get_class($data), ['Illuminate\Database\Eloquent\Builder'])) {

// 直接調用dd 查看

dd($data);

} else {

$show_data = print_r($data, true);

}

$str .= $show_data;

$str .= '

';

echo $str;

}

}

打印上面的數據后的輸出是這個樣子的;

怎么樣;

這看起來直觀多了吧;

laravel 的 dump 函數是不會終止代碼的;

但有些時候;

我們希望打印數據并停止往后執行;

thinkphp 中沒有內置這樣的函數;

laravel 比較體貼給了個 dd 函數;

那么在我這相應的寫了一個 pd 函數;

if (!function_exists('pd')) {

// 傳遞數據以易于閱讀的樣式格式化后輸出并終止

function pd($data, $toArray = true)

{

p($data, $toArray);

die;

}

}

這兩個函數有了那應該放哪呢?

如果不知道;

出門左轉找上一篇文章;

答案就在里面;

寫給 thinkphp 開發者的 laravel 系列教程 (八) 自定義函數和類

————用來補充內容的分割線—————

后來;我的 p 函數又升級了;

現在是一個擴展包;

開源項目系列之laravel-print以簡潔的方式打印數據

總結

以上是生活随笔為你收集整理的php语+言教程,写给thinkphp开发者的laravel系列教程(九)打印数据-Fun言的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。