[
](https://lccdn.phphub.org/uploads/images/201706/26/5350/XBCopzKcYm.jpeg)
前段时间写过一篇 PHP 调试函数的对比 调试代码之 dd VS var_dump VS print_r ?,架不住口嫌体正,其中 Laravel 的辅助函数 dd()
一旦用上瘾了就很难戒了,经常会不自觉地在调试代码的时候用上它,然后就悲剧了。
[
](https://lccdn.phphub.org/uploads/images/201706/26/5350/sb6dlZ0RY1.png)
之前有个人发表了一篇 在其他框架中使用 dump () & dd () 函数,讲如何在其他框架中使用 dd(),但这有个很麻烦的地方,就是每一个不是 Laravel 的项目你都得做这样的配置。甚至在团队开发中,很多情况下并不允许你提交可能只有你自己在使用的调试代码。
[
](https://lccdn.phphub.org/uploads/images/201706/26/5350/O9IfRsw9ls.png)
@cjjian 同学的博客里面有一篇 VarDumper高亮提示,里面有关于全局安装使用 composer 包的内容,灵机一动之下,我便心痒痒地就折腾起来了。
全局安装 : composer global require symfony/var-dumper
配置 php.ini
在 php.ini 中找到 auto_prepend_file,然后写上你相对应的路径,比如我的路径:
auto_prepend_file = /home/vagrant/.composer/vendor/autoload.php
不知道 php.ini 在哪?phpinfo() 一下你就知道~
更新 composer: composer global update
这样一来就可以使用 dump()
了。不过还不够,我们还要把 dd()
的代码放进来。
准备 dd()
找个地方复制以下代码(我直接命名成 laravel_helper.php
)
<?php
# install symfony/var-dump to your project
# composer require symfony/var-dumper
// use namespace
use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\CliDumper;
use Symfony\Component\VarDumper\Dumper\HtmlDumper as SymfonyHtmlDumper;
/**
* Class HtmlDumper
*/
class HtmlDumper extends SymfonyHtmlDumper
{
/**
* Colour definitions for output.
*
* @var array
*/
protected $styles = [
'default' => 'background-color:#fff; color:#222; line-height:1.2em; font-weight:normal; font:12px Monaco, Consolas, monospace; word-wrap: break-word; white-space: pre-wrap; position:relative; z-index:100000',
'num' => 'color:#a71d5d',
'const' => 'color:#795da3',
'str' => 'color:#df5000',
'cchr' => 'color:#222',
'note' => 'color:#a71d5d',
'ref' => 'color:#a0a0a0',
'public' => 'color:#795da3',
'protected' => 'color:#795da3',
'private' => 'color:#795da3',
'meta' => 'color:#b729d9',
'key' => 'color:#df5000',
'index' => 'color:#a71d5d',
];
}
/**
* Class Dumper
*/
class Dumper
{
/**
* Dump a value with elegance.
*
* @param mixed $value
* @return void
*/
public function dump($value)
{
if (class_exists(CliDumper::class)) {
$dumper = 'cli' === PHP_SAPI ? new CliDumper : new HtmlDumper;
$dumper->dump((new VarCloner)->cloneVar($value));
} else {
var_dump($value);
}
}
}
if (! function_exists('dd')) {
/**
* Dump the passed variables and end the script.
*
* @param mixed
* @return void
*/
function dd(...$args)
{
foreach ($args as $x) {
(new Dumper)->dump($x);
}
die(1);
}
}
if (! function_exists('dda')) {
/**
* Dump the passed array variables and end the script.
*
* @param mixed
* @return void
*/
function dda(...$args)
{
foreach ($args as $x) {
(new Dumper)->dump($x->toArray());
}
die(1);
}
}
记下这个文件的路径,比如我的是:/var/www/composer/laravel_helper.php
更改全局 composer.json
然后我们找到全局的 composer.json 所在的位置,通常在用户根目录下,在 autoload 中增加这个文件的路径:
{
....
"require": {
.....
"symfony/var-dumper": "^3.3"
},
"autoload": {
"files": [
"/var/www/composer/laravel_helper.php"
]
}
}
最后更新一下,就可以 dd 用起来了! composer global dump-autoload
symfony/var-dumper 这个扩展包只有一个依赖,但是如果哪天这个 polyfill-mbstring 升级到了2+,然后你的项目里依赖了 2+ 的 polyfill,而 var-dumper 没有跟上,可能就会造成问题。这种时候,记得把全局的更新一下就好了。
[
](https://lccdn.phphub.org/uploads/images/201706/26/5350/CzrtyLSl4x.png)
Stay Hungry, Stay Foolish.
Original url: Access
Created at: 2018-10-10 15:12:35
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论