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

这篇博客介绍了如何在 Laravel 中自定义 `p` 和 `pd` 函数,以提供更友好的数据打印和调试体验。作者通过代码展示了如何格式化输出,特别是对于Collection对象的处理,使其更易读。此外,还提到了如何使用 `dd` 函数在打印数据后终止代码执行。这些自定义函数旨在简化日常开发过程中的数据检查,提高工作效率。
摘要由CSDN通过智能技术生成

php这种脚本语言调试起来是很方便的;

大多时候看报错打印一下数据就知道问题所在了;

php 内置了常用打印函数 print 和 var_dump ;

但是打印出来的样式实在让人目瞪狗呆;

thinkphp 框架自带一个 dump 函数;

看过上篇文章的童鞋会懂我的;

除非是需要查看数据的类型等更详细数据;

否则平常开发我是不用框架的打印函数;

laravel 也是有一个dump 函数的;

这个打印出来就漂亮多了;

59c7c78cb174f.jpg

跟我那个 p 函数一样的简洁而且还带颜色;

从数据库取出来的数据是一个 Collection 对象;

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

59c7c7be562f3.jpg

默认都是折起来;

需要我们点下箭头按钮才会展开;

这里有个小技巧;

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;

}

}

打印上面的数据后的输出是这个样子的;

59c7c7e4b5e2d.jpg

怎么样;

这看起来直观多了吧;

laravel 的 dump 函数是不会终止代码的;

但有些时候;

我们希望打印数据并停止往后执行;

thinkphp 中没有内置这样的函数;

laravel 比较体贴给了个 dd 函数;

那么在我这相应的写了一个 pd 函数;

if (!function_exists('pd')) {

// 传递数据以易于阅读的样式格式化后输出并终止

function pd($data, $toArray = true)

{

p($data, $toArray);

die;

}

}

这两个函数有了那应该放哪呢?

如果不知道;

出门左转找上一篇文章;

答案就在里面;

写给 thinkphp 开发者的 laravel 系列教程 (八) 自定义函数和类

————用来补充内容的分割线—————

后来;我的 p 函数又升级了;

现在是一个扩展包;

开源项目系列之laravel-print以简洁的方式打印数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值