使用VarDumper進行優雅的PHP除錯

2021-09-20 02:49:26 字數 2892 閱讀 5161

相信很多php開發者在寫**的時候都會經常用到var_dump()這個函式,很多人都會直接用類似die(var_dump($var))來檢視乙個變數或者乙個例項到底是長什麼樣的,稍微有一些人可能還直接封裝過:比如直接叫乙個vdd()等,以便於自己在除錯自己的**的時候使用。這種方式一直陪伴著我走過了這麼久的程式設計時光,以至於造成了對var_dump()出來的現實樣式都有一點審美疲勞了:因為var_dump()出來的可以說是完全沒有什麼美感啊,至少對於像我們這些**工作者來說:你竟然沒有高亮!!不能接受。

然後之前苦於沒有找到很好的解決方案,也就是一直這樣忍受著過來了,直到昨天我發現了這貨:

symfony vardumper

測試樣式是長這樣的:

我第一眼看到這個的時候就馬上愛上這貨了,忍不住要寫點東西來分享一下:

先來說說symfony vardumper的優點,symfony vardumper不僅可以做到像var_dump()一樣除錯,而且可以做得更好,並不是只靠臉生活的:

你可以輕鬆配置輸出資料的格式:html 或者 命令列樣式

對於一些可能重複太多的資料,vardumper智慧型過濾將其摺疊起來,並且你可以很完美地看到你的資料的結構是什麼樣的,不清楚的話等下可以看下面的截圖。

每個列印出來的物件或變數都有特定的樣式。

說了這麼多之後,我們終於要來一睹廬山真面目了。首先是安裝,最簡單的方法就是直接使用composer安裝,建立乙個新的資料夾php/,我們來測試一下:

cd php/

composer require symfony/var-dumper

再來建立乙個index.php,將自動載入檔案autoload.php包含進來:

<?php 

require __dir__.'/vendor/autoload.php';

首先在index.php寫乙個簡單的陣列來測試一下:

<?php 

require __dir__.'/vendor/autoload.php';

$var = array(

'a ****** string' => 'in an array of 5 elements',

'a float' => 1.0,

'an integer' => 1,

'a boolean' => true,

'an empty array' => array(),

);dump($var);

出來的結果是這樣的:

上面對於陣列的表現symfony vardumper貌似做得很完美,不僅給我們舒適的高亮,還很清晰的給了我們這個陣列的結構。那麼對於php中的stdobject,symfony vardumper的表現會是如何呢?我們來看看:

class test 

}$test = new test(50);

dump($test);

出來的結果是這樣的,注意它的高粱顏色有不一樣了:

這裡可以看到:public就用+表示,private就用-表示,而protected就用#表示。不見如此,如果你仔細看圖,你會看到當滑鼠浮在對應的屬性上面的時候,會有乙個小小的提示框來提醒我們這個具體是什麼,很完美啊。

我們既然需要測試,那麼在類中新增對應的方法呢,這個到底會給我們什麼樣的除錯反饋呢?

class test ;

}public function buildfunction() ;

}public function __call($method, $args)

}}$test = new test();

$methodone = function() ;

$test->methodone = $methodone;

$test->buildfunction();

$test->methodone();

dump($test);

表現依然很驚豔:

在上圖中,你不僅可以很清晰地知道各個方法的類名是什麼,也可以知道this代表的是什麼,甚至還可以知道這個**段是從第幾行開始第幾行結束的!666...

可能很多同學看了這篇文章之後會覺得我們在自定義樣式時直接改檔案不太好,因為這個時候,如果你切換到其他的專案,你還是得重新再安裝一次,難道還得再改一次?不是這樣的,其實我推薦大家的做法是:全域性安裝symfony vardumper,這樣不僅可以解決樣式一次性問題,還可以讓你在任何專案中使用symfony vardumper,安裝方法如下:

第一步,全域性安裝:

composer global require symfony/var-dumper;
第二:配置php.ini在php.ini中找到auto_prepend_file,然後寫上你相對應的路徑,比如像下面這樣的:

auto_prepend_file = $/.composer/vendor/autoload.php
最後,更新composer直接命令列執行:

composer global update
到這裡,你就可以配置好乙個很優雅的除錯介面了。反正我是很喜歡,不知道你是什麼感受。

如何優雅的使用Lombok進行spring 注入

lombok為了開發環境簡化 好處不用多說。spring 注入方式為2種,構造器注入和setter注入 使用 lombok 進行setter注入 盡量優先使用setter注入 service setter onmethod public class testserviceimpl implement...

論如何優雅地進行工作安排

在工作中是否遇到下面的困惑 1.每天來到公司應該做些什麼事情感到茫然。2.對於專案不了解,進度把握不好。3.傳統的專案管理工具購買成本動輒幾十萬 上百萬,軟體部署 安裝複雜。4.經過專業的培訓都不一定能學會使用,並且並不一定能很好地解決團隊協作效率問題。面對這樣的困惑,這裡我們要給您推薦一款學習成本...

優雅的使用python

優雅的使用python,讓自己的code更pythonic test list 龍母 雪諾 提里昂 山姆 count 0 for name in test list print s的序號是 d name,count count 1龍母的序號是 0 雪諾的序號是 1 提里昂的序號是 2 山姆的序號是 ...