摘要:每個打印出來的對象或變量都有特定的樣式。安裝使用之說了這么多之后,我們終于要來一睹廬山真面目了。
原文來自: https://jellybool.com/post/a-brand-new-way-to-test-php-with-symfony-va...
相信很多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包含進來:
首先在index.php寫一個簡單的數組來測試一下:
"in an array of 5 elements", "a float" => 1.0, "an integer" => 1, "a boolean" => true, "an empty array" => array(), ); dump($var);出來的結果是這樣的:
有沒有覺得很不錯!這里還要說一點的是:如果你覺得Symfony VarDumper自帶的樣式不夠美觀,你可以直接到Dumper/HtmlDumper.php去修改你的自己的樣式,比如你很喜歡github風,你完全可以自己在這個文件里面寫你自己的css樣式。
上面對于數組的表現Symfony VarDumper貌似做得很完美,不僅給我們舒適的高亮,還很清晰的給了我們這個數組的結構。那么對于php中的stdObject,Symfony VarDumper的表現會是如何呢?我們來看看:
class Test { public $prop1 = 10; private $prop2 = 20; protected $prop3 = 30; private $prop4 = 40; public function __construct($value) { $this->undefinedProp = $value; } } $test = new Test(50); dump($test);出來的結果是這樣的,注意它的高粱顏色有不一樣了:
這里可以看到:public就用 + 表示,private 就用 - 表示,而protected 就用 # 表示。不見如此,如果你仔細看圖,你會看到當鼠標浮在對應的屬性上面的時候,會有一個小小的提示框來提醒我們這個具體是什么,很完美啊。
我們既然需要測試,那么在類中添加對應的方法呢,這個到底會給我們什么樣的調試反饋呢?
class Test { public $methodOne; protected $methodTwo; public function __construct() { $this->methodTwo = function() { return "I am method 2"; }; } public function buildFunction() { $this->methodThree = function() { return "I am method 3"; }; } public function __call($method, $args) { if (isset($this->$method)) { $func = $this->$method; return call_user_func_array($func, $args); } } } $test = new Test(); $methodOne = function() { return "I am method 1"; }; $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 = ${HOME}/.composer/vendor/autoload.php最后,更新composer
直接命令行執行:
composer global update到這里,你就可以配置好一個很優雅的調試界面了。反正我是很喜歡,不知道你是什么感受。
Happy Hacking
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21053.html
摘要:每個打印出來的對象或變量都有特定的樣式。安裝使用之說了這么多之后,我們終于要來一睹廬山真面目了。 很多PHP開發者在寫代碼的時候用到var_dump()這個函數,很多人都會直接用類似die(var_dump($var))來查看一個變量或者一個實例到底是長什么樣的,稍微有一些人可能還直接封裝過:比如直接叫一個vdd()等,以便于自己在調試自己的代碼的時候使用。這種方式一直陪伴著我走過了這...
摘要:不通過日志獲取執行的原生語句和打印變量數據打印變量數據可以這樣寫引用命名空間使用使用第二個參數是數組的深度第三個參數是是否顯示代碼高亮默認不顯示從數據庫二維數組中返回一維數組并配合驗證規則實現分類數據過濾。 1、不通過日志獲取AR執行的原生SQL語句和打印變量數據 $query = User::find() ->select([username])->where([id=>[1,2,3...
摘要:繼控制器與視圖交互,本篇將講解如何自定義全局函數,以及使用自帶的用戶注冊登錄功能全局函數有時候我們希望自定義一些函數,可以在全局中調用,如默認的在頁面上的顯示效果并不好,尤其是多層級數組的情況下,一大坨數據很難分辨。 繼控制器與視圖交互,本篇將講解如何自定義全局函數,以及使用yii自帶的用戶注冊登錄功能 全局函數 有時候我們希望自定義一些函數,可以在全局中調用,如php默認的var_d...
摘要:我們有時會碰到一個場景,比如買車票,需要進行查詢車票剩余,這時候需要一個日期范圍,開始日期必須大于等于今天,結束日期必須大于等于開始日期。通過增加一個額外的字段,然后通過這個字段限制范圍。測試發現實際并不生效。 我們有時會碰到一個場景,比如買車票,需要進行查詢車票剩余,這時候需要一個日期范圍,開始日期必須大于等于今天,結束日期必須大于等于開始日期。 Version Laravel 5...
摘要:文章轉自視頻教程優雅的應用調試工具新擴展是由和開源的應用的調試工具。計劃任務列出已運行的計劃任務。該封閉函數會被序列化為一個長字符串,加上他的哈希與簽名如出一轍該功能將記錄所有異常,并可查看具體異常情況。事件顯示所有事件的列表。 文章轉自:https://laravel-china.org/topics/19013視頻教程:047. 優雅的應用調試工具--laravel/telesco...
閱讀 3072·2021-11-25 09:43
閱讀 2251·2021-09-07 10:28
閱讀 3543·2021-08-11 11:14
閱讀 2777·2019-08-30 13:49
閱讀 3544·2019-08-29 18:41
閱讀 1163·2019-08-29 11:26
閱讀 1976·2019-08-26 13:23
閱讀 3372·2019-08-26 10:43