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言相关推荐
- 写给 Web 开发者的深度学习教程 - 向量化 矩阵
前言 在这个科技发展日新月异的时代,行业的宠儿与弃儿就如同手掌的两面,只需轻轻一翻,从业者的境遇便会有天翻地覆的改变. 人工智能作为近两年来业界公认的热门领域,不同于之前火热的移动端开发或前端开发,其 ...
- springboot util 测试类怎么写_SpringBoot入门建站全系列(九)文件上传功能与下载方式...
SpringBoot入门建站全系列(九)文件上传功能与下载方式 Spring对文件上传做了简单的封装,就是用MultipartFile这个对象去接收文件,当然有很多种写法,下面会一一介绍. 文件的下载 ...
- php laravel 入门教程,PHP语言菜鸟笔记,laravel 入门教程
本文主要向大家介绍了PHP语言菜鸟笔记,laravel 入门教程,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 安装 Laravel: 查看laravel包: composer sea ...
- 写给 Android 开发者的 Gradle 系列(一)基本姿势
如果你对本文感兴趣,也许你对我的公众号也会有兴趣,可扫下方二维码或搜索公众微信号:mxszgg 本文基于 Android Gradle plugin 3.0.1 Gradle 介绍 如何学习 Grad ...
- memcached完全剖析系列教程《转》 memcached完全剖析系列教程–2.理解memcached的内存存储...
本文目录 Slab Allocation机制:整理内存以便重复使用 · Slab Allocation的主要术语 · 在Slab中缓存记录的原理 · Slab Allocator的缺点 · 使用Gro ...
- linux lanmp 安装教程,linux服务器一键安装包lanmp系列教程之一
在我们安装了linux服务器WEB环境一键安装包lanmp后,可能会有不少疑问还有就是使用过程中出现的问题,下面为大家总结几点比较常见的,如若还有其他疑问,可到wdlinux论坛寻找相关教程. 1.如 ...
- 第11课:JSP指令 Include指令 Taglib指令 (JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)
Include指令 JSP include 指令用于通知 JSP 引擎在翻译当前 JSP 页面时,将其他文件中的内容合并进当前 JSP 页面转换成的 Servlet 源文件中,这种在源文件级别进行引入 ...
- 3.3.4 h5 -manifest.json-常用配置【uni-app从入门到精通在线教程(黄菊华-跨平台开发系列教程)】
自定义模板 需要使用自定义模板的场景,通常有以下几种情况: 调整页面 head 中的 meta 配置 补充 SEO 相关的一些配置(仅首页) 加入百度统计等三方js 使用自定义模板时,1. ...
- 5.3.2 表单内数据的获取 -表单的使用- 常用语法【uni-app教程uniapp教程(黄菊华-跨平台开发系列教程)】
5.3.2 表单内数据的获取 在表单的组件,我们需要定义name的值,然后我们在提交表单的时候,就可以通过name获取对应的值,获取内容的格式如下: e.detail.value.组件的name 提示 ...
最新文章
- Android核心分析之二十三Andoird GDI之基本原理及其总体框架
- (17)10-10-12分页
- SpringBoot整合mybatis(CRUD)
- 王者荣耀10连胜,竟然也有人不相信,猎游大神带菜鸡玩家10连胜
- go-文件读写-db
- 句柄泄漏与应用程序体验查找服务(AELookupSvc)
- iPhone的OpenGL ES的资源- 18,你必须知道 !
- c#DataGridView响应键盘事件
- JSON对象按照ASCII对key值排序
- Mac上安装PL/SQL Developer
- mac 编译mysql 源码_Mac上编译MySQL源码与安装
- 强强联合!蚂蚁金服与新炬网络战略合作,共同致力于国产数据库的技术推广和生态建设...
- 2021上交应用统计考研经验贴(初试)
- 6sigma精益改善-常用术语和方法工具
- ERP业务流程优化设计之思想和原则
- java使用poi读写word中的图片(二)
- [UVALive3942] Remember the Word 字符串
- pandas -----变形(透视表、melt、stack、unstack),哑变量与因子变化
- XHCI host controller/device 初始化
- 5G网络建设80%如期推进,各省市5G建设进展与规划情况如何?