很多PHP开发者在写代码的时候都会使用var_dump()函数,也有很多人会直接使用die(var_dump($var))之类的东西来检查一个变量或者一个实例是否是它看起来的样子like,有的人可能直接封装了:比如直接调用一个vdd()等,这样调试自己代码的时候就可以用到。这种方式在我编程的时间里伴随了我这么久,以至于我对var_dump()这种写实风格有点审美疲劳:因为var_dump()的输出可以说是完全没有美感,至少对于像我们这样的编码员:你没有突出显示!!不可接受的。之前遇到过然后苦于没有找到好的解决方案,就是一直这样忍着,直到昨天找到这个产品:SymfonyVarDumpertestpattern长这样:第一次看到这个,立马爱上了it既然上了这个产品,就忍不住写点东西分享一下:先说说SymfonyVarDumper的优点吧。SymfonyVarDumper不仅可以像var_dump()一样debug,而且做得更好,不只是靠脸Live:可以很方便的配置输出数据的格式:HTML或者命令行风格对于一些可能重复太多的数据,VarDumper智能过滤会把它折叠起来,你可以完美地看到你的数据的结构是什么样子的,如果你不确定,你可以稍后看下面的截图。每个打印的对象或变量都有特定的样式。说了这么多安装和使用,终于要一睹庐山真面目了。首先是安装,最简单的方法是直接使用composer安装,新建一个文件夹php/,我们来测试一下:cdphp/composerrequiresymfony/var-dumper然后新建一个index.php,会自动加载包含文件自动加载.php:'在一个包含5个元素的数组中','一个浮点数'=>1.0,'一个整数'=>1,'一个布尔值'=>true,'一个空数组'=>数组(),);转储($var);结果是这样的:你觉得很好吗!这里还要说一点:如果觉得SymfonyVarDumper自带的样式不够漂亮,可以直接去Dumper/HtmlDumper.php修改自己的样式。在文件中编写自己的css样式。SymfonyVarDumper似乎完美地完成了数组的上述性能。它不仅给了我们一个舒适的高亮,而且还清楚地给了我们数组的结构。那么对于php中的stdObject,SymfonyVarDumper会如何表现呢?让我们来看看:classTest{public$prop1=10;private$prop2=20;protected$prop3=30;private$prop4=40;publicfunction__construct($value){$this->undefinedProp=$value;}}$test=newTest(50);dump($test);结果是这样的,注意高粱颜色不一样:可以看到这里:public用+表示,private用-表示,protected用#表示。不是这样的,仔细看图会发现,当鼠标悬停在对应的属性上时,会有一个小提示框提醒我们这是什么,完美。既然我们要测试,那么在类中添加相应的方法,这会给我们什么样的调试反馈呢?类测试{public$methodOne;protected$methodTwo;publicfunction__construct(){$this->methodTwo=function(){return'我是方法2';};}publicfunctionbuildFunction(){$this->methodThree=function(){return'我是方法3';};}publicfunction__call($method,$args){if(isset($this->$method)){$func=$this->$method;返回call_user_func_array($func,$args);}}}$test=newTest();$methodOne=function(){return'我是方法1';};$test->methodOne=$methodOne;$test->buildFunction();$test->methodOne();转储($测试);性能还是很惊人的:在上图中,你不仅可以清楚的知道每个方法的类名是什么,还可以知道这个代表什么,甚至可以知道这个代码段从哪一行开始,到哪一行结束和!666...说到最后,可能很多同学看完这篇文章会觉得我们在自定义样式的时候直接改文件不好,因为这时候如果切换到其他项目,还是要重装一遍,是不是又要改了?不是这种情况。事实上,我建议您全局安装SymfonyVarDumper。这不仅可以解决样式的一次性问题,还可以让您在任何项目中使用SymfonyVarDumper。安装方法如下:第一步,全局安装:composerglobalrequiresymfony/var-dumper;第二:在php中配置php.ini。在ini中找到auto_prepend_file,然后写上你对应的路径,比如:auto_prepend_file=${HOME}/.composer/vendor/autoload.php最后更新composer,直接在命令行执行:composerglobalupdatehere,You可以配置一个非常优雅的调试界面。反正我很喜欢。我不知道你感觉如何。
