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言相关推荐

  1. 写给 Web 开发者的深度学习教程 - 向量化 矩阵

    前言 在这个科技发展日新月异的时代,行业的宠儿与弃儿就如同手掌的两面,只需轻轻一翻,从业者的境遇便会有天翻地覆的改变. 人工智能作为近两年来业界公认的热门领域,不同于之前火热的移动端开发或前端开发,其 ...

  2. springboot util 测试类怎么写_SpringBoot入门建站全系列(九)文件上传功能与下载方式...

    SpringBoot入门建站全系列(九)文件上传功能与下载方式 Spring对文件上传做了简单的封装,就是用MultipartFile这个对象去接收文件,当然有很多种写法,下面会一一介绍. 文件的下载 ...

  3. php laravel 入门教程,PHP语言菜鸟笔记,laravel 入门教程

    本文主要向大家介绍了PHP语言菜鸟笔记,laravel 入门教程,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 安装 Laravel: 查看laravel包: composer sea ...

  4. 写给 Android 开发者的 Gradle 系列(一)基本姿势

    如果你对本文感兴趣,也许你对我的公众号也会有兴趣,可扫下方二维码或搜索公众微信号:mxszgg 本文基于 Android Gradle plugin 3.0.1 Gradle 介绍 如何学习 Grad ...

  5. memcached完全剖析系列教程《转》 memcached完全剖析系列教程–2.理解memcached的内存存储...

    本文目录 Slab Allocation机制:整理内存以便重复使用 · Slab Allocation的主要术语 · 在Slab中缓存记录的原理 · Slab Allocator的缺点 · 使用Gro ...

  6. linux lanmp 安装教程,linux服务器一键安装包lanmp系列教程之一

    在我们安装了linux服务器WEB环境一键安装包lanmp后,可能会有不少疑问还有就是使用过程中出现的问题,下面为大家总结几点比较常见的,如若还有其他疑问,可到wdlinux论坛寻找相关教程. 1.如 ...

  7. 第11课:JSP指令 Include指令 Taglib指令 (JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)

    Include指令 JSP include 指令用于通知 JSP 引擎在翻译当前 JSP 页面时,将其他文件中的内容合并进当前 JSP 页面转换成的 Servlet 源文件中,这种在源文件级别进行引入 ...

  8. 3.3.4 h5 -manifest.json-常用配置【uni-app从入门到精通在线教程(黄菊华-跨平台开发系列教程)】

    自定义模板 需要使用自定义模板的场景,通常有以下几种情况:  调整页面 head 中的 meta 配置  补充 SEO 相关的一些配置(仅首页)  加入百度统计等三方js 使用自定义模板时,1. ...

  9. 5.3.2 表单内数据的获取 -表单的使用- 常用语法【uni-app教程uniapp教程(黄菊华-跨平台开发系列教程)】

    5.3.2 表单内数据的获取 在表单的组件,我们需要定义name的值,然后我们在提交表单的时候,就可以通过name获取对应的值,获取内容的格式如下: e.detail.value.组件的name 提示 ...

最新文章

  1. Android核心分析之二十三Andoird GDI之基本原理及其总体框架
  2. (17)10-10-12分页
  3. SpringBoot整合mybatis(CRUD)
  4. 王者荣耀10连胜,竟然也有人不相信,猎游大神带菜鸡玩家10连胜
  5. go-文件读写-db
  6. 句柄泄漏与应用程序体验查找服务(AELookupSvc)
  7. iPhone的OpenGL ES的资源- 18,你必须知道 !
  8. c#DataGridView响应键盘事件
  9. JSON对象按照ASCII对key值排序
  10. Mac上安装PL/SQL Developer
  11. mac 编译mysql 源码_Mac上编译MySQL源码与安装
  12. 强强联合!蚂蚁金服与新炬网络战略合作,共同致力于国产数据库的技术推广和生态建设...
  13. 2021上交应用统计考研经验贴(初试)
  14. 6sigma精益改善-常用术语和方法工具
  15. ERP业务流程优化设计之思想和原则
  16. java使用poi读写word中的图片(二)
  17. [UVALive3942] Remember the Word 字符串
  18. pandas -----变形(透视表、melt、stack、unstack),哑变量与因子变化
  19. XHCI host controller/device 初始化
  20. 5G网络建设80%如期推进,各省市5G建设进展与规划情况如何?

热门文章

  1. mybatis ResultMap
  2. pyspark汇总小结
  3. 条件随机场(CRF) - 1 - 简介
  4. LeetCode简单题之区域和检索 - 数组不可变
  5. ALD和CVD晶体管薄膜技术
  6. ResNet网络的训练和预测
  7. PyTorch中的MIT ADE20K数据集的语义分割
  8. 嵌入式Linux设备驱动程序:在运行时读取驱动程序状态
  9. 编译器架构Compiler Architecture(下)
  10. 2021年大数据Spark(三十一):Spark On Hive