├── composer.json ├── readme.md └── src └── helpers.php /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "baijunyao/laravel-print", 3 | "keywords": ["laravel", "print", "dump"], 4 | "description": "laravel print", 5 | "type": "library", 6 | "license": "MIT", 7 | "authors": [ 8 | { 9 | "name": "baijunyao", 10 | "email": "baijunyao@baijunyao.com" 11 | } 12 | ], 13 | "require": {}, 14 | "autoload": { 15 | "psr-4": { 16 | "Baijunyao\\LaravelPrint\\": "src/" 17 | }, 18 | "files": [ 19 | "src/helpers.php" 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ### 介绍 2 | laravel 中有个 `dump` 可以用来打印数据; 3 |  4 | 但是也存在这很多的不便利; 5 | 咱一条一条来吐槽哈; 6 | 撒气爱子: 7 | 1. 打印出来的数据默认是折叠的; 8 |  9 | 我打印数据果断是要看具体内容的; 10 | 然鹅这还需要我们手动层层点开; 11 | 想想也是心累; 12 | 2. 打印模型时展示了太多的属性; 13 |  14 | 当我们一层一层的剥开它的心后; 15 | 终于才能在 `attributes` 中找到我们想要的数据; 16 | 那么多的属性堆在这; 17 | 给的再多不如懂我; 18 | 看看也是眼累; 19 | 3. chrome 调试 ajax 的时候不能正常展示打印的样式; 20 | 21 | 于是 laravel-print 横空出世; 22 | 无图言* ; 23 |  24 | 默认以数组的形式展示数据; 25 | 默认展开数据; 26 | 调试面板下的 Network 中的 Preview 完美展示; 27 | 28 | ### 安装使用 29 | 好了下面进入安装使用环节; 30 | ```bash 31 | composer require baijunyao/laravel-print 32 | ``` 33 | 需要打印的时候使用 `p($data)` 代替 `dump($data)`; 34 | 使用 `pd($data)` 代替 `dd($data)`; 35 | 36 | ### 文章 37 | [开源项目系列之laravel-print以简洁的方式打印数据](https://baijunyao.com/article/152) 38 | 39 | ## 链接 40 | - 博客:https://baijunyao.com 41 | - github:https://github.com/baijunyao/laravel-print 42 | - gitee:https://gitee.com/baijunyao/laravel-print 43 | -------------------------------------------------------------------------------- /src/helpers.php: -------------------------------------------------------------------------------- 1 | runningInConsole()) { 15 | return dump($data); 16 | } 17 | 18 | VarDumper::setHandler(function ($var) use($toArray) { 19 | $cloner = new VarCloner(); 20 | $dumper = new HtmlDumper(); 21 | $hint = ''; 22 | 23 | // 需要转成数组的类 24 | $collect = [ 25 | Collection::class, 26 | Base::class, 27 | LaravelExcelReader::class 28 | ]; 29 | 30 | if (is_object($var) && $toArray) { 31 | $className = get_class($var); 32 | $parentClassName = get_parent_class($var); 33 | if (in_array($className, $collect) || in_array($parentClassName, $collect)) { 34 | // 把集合转成数组形式查看 35 | $hint = '
下面是一个使用->toArray()方法转成的数组'; 36 | $var = $var->toArray(); 37 | } 38 | } 39 | 40 | $dumper->setStyles([ 41 | 'default' => 'background-color:#18171B; color:#FF8400; line-height:1.2em; font-size:14px; font-family:Microsoft Yahei; word-wrap: break-word; white-space: pre-wrap; position:relative; z-index:9999; word-break: break-all', 42 | 'num' => 'font-weight:bold; color:#1299DA', 43 | 'const' => 'font-weight:bold', 44 | 'str' => 'color:#56DB3A; font-family:Microsoft Yahei;', 45 | 'note' => 'color:#1299DA; font-family:Microsoft Yahei;', 46 | 'ref' => 'color:#A0A0A0', 47 | 'public' => 'color:#FFFFFF', 48 | 'protected' => 'color:#FFFFFF', 49 | 'private' => 'color:#FFFFFF', 50 | 'meta' => 'color:#B729D9', 51 | 'key' => 'color:#56DB3A; font-family:Microsoft Yahei', 52 | 'index' => 'color:#1299DA', 53 | 'ellipsis' => 'color:#FF8400', 54 | ]); 55 | $dumper->setDisplayOptions([ 56 | 'maxDepth' => 3, 57 | ]); 58 | $dumper->setDumpBoundaries( 59 | $hint.'
', 60 | '' 61 | ); 62 | $dumper->dump($cloner->cloneVar($var)); 63 | }); 64 | // 设置response为500以处理ajax下无法预览结构的问题 65 | http_response_code(500); 66 | dump($data); 67 | } 68 | } 69 | 70 | if (!function_exists('pd')) { 71 | // 传递数据以易于阅读的样式格式化后输出并die掉 72 | function pd($data, $toArray = true) 73 | { 74 | p($data, $toArray);die; 75 | } 76 | } --------------------------------------------------------------------------------