成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

使用VarDumper進(jìn)行優(yōu)雅的PHP調(diào)試

davidac / 569人閱讀

摘要:每個(gè)打印出來(lái)的對(duì)象或變量都有特定的樣式。安裝使用之說(shuō)了這么多之后,我們終于要來(lái)一睹廬山真面目了。

  

原文來(lái)自: https://jellybool.com/post/a-brand-new-way-to-test-php-with-symfony-va...

相信很多PHP開(kāi)發(fā)者在寫(xiě)代碼的時(shí)候都會(huì)經(jīng)常用到var_dump()這個(gè)函數(shù),很多人都會(huì)直接用類(lèi)似die(var_dump($var))來(lái)查看一個(gè)變量或者一個(gè)實(shí)例到底是長(zhǎng)什么樣的,稍微有一些人可能還直接封裝過(guò):比如直接叫一個(gè)vdd()等,以便于自己在調(diào)試自己的代碼的時(shí)候使用。這種方式一直陪伴著我走過(guò)了這么久的編程時(shí)光,以至于造成了對(duì)var_dump()出來(lái)的現(xiàn)實(shí)樣式都有一點(diǎn)審美疲勞了:因?yàn)?b>var_dump()出來(lái)的可以說(shuō)是完全沒(méi)有什么美感啊,至少對(duì)于像我們這些代碼工作者來(lái)說(shuō):你竟然沒(méi)有高亮!!不能接受。

相遇

然后之前苦于沒(méi)有找到很好的解決方案,也就是一直這樣忍受著過(guò)來(lái)了,直到昨天我發(fā)現(xiàn)了這貨:

Symfony VarDumper

測(cè)試樣式是長(zhǎng)這樣的:

我第一眼看到這個(gè)的時(shí)候就馬上愛(ài)上這貨了,忍不住要寫(xiě)點(diǎn)東西來(lái)分享一下:

先來(lái)說(shuō)說(shuō)Symfony VarDumper的優(yōu)點(diǎn),Symfony VarDumper不僅可以做到像var_dump()一樣調(diào)試,而且可以做得更好,并不是只靠臉生活的:

你可以輕松配置輸出數(shù)據(jù)的格式:HTML 或者 命令行樣式

對(duì)于一些可能重復(fù)太多的數(shù)據(jù),VarDumper智能過(guò)濾將其折疊起來(lái),并且你可以很完美地看到你的數(shù)據(jù)的結(jié)構(gòu)是什么樣的,不清楚的話等下可以看下面的截圖。

每個(gè)打印出來(lái)的對(duì)象或變量都有特定的樣式。

安裝使用之

說(shuō)了這么多之后,我們終于要來(lái)一睹廬山真面目了。首先是安裝,最簡(jiǎn)單的方法就是直接使用composer安裝,創(chuàng)建一個(gè)新的文件夾php/,我們來(lái)測(cè)試一下:

cd php/

composer require symfony/var-dumper

再來(lái)創(chuàng)建一個(gè)index.php,將自動(dòng)加載文件autoload.php包含進(jìn)來(lái):



首先在index.php寫(xiě)一個(gè)簡(jiǎn)單的數(shù)組來(lái)測(cè)試一下:

 "in an array of 5 elements",
    "a float" => 1.0,
    "an integer" => 1,
    "a boolean" => true,
    "an empty array" => array(),
);
dump($var);


出來(lái)的結(jié)果是這樣的:

有沒(méi)有覺(jué)得很不錯(cuò)!這里還要說(shuō)一點(diǎn)的是:如果你覺(jué)得Symfony VarDumper自帶的樣式不夠美觀,你可以直接到Dumper/HtmlDumper.php去修改你的自己的樣式,比如你很喜歡github風(fēng),你完全可以自己在這個(gè)文件里面寫(xiě)你自己的css樣式。

上面對(duì)于數(shù)組的表現(xiàn)Symfony VarDumper貌似做得很完美,不僅給我們舒適的高亮,還很清晰的給了我們這個(gè)數(shù)組的結(jié)構(gòu)。那么對(duì)于php中的stdObject,Symfony VarDumper的表現(xiàn)會(huì)是如何呢?我們來(lái)看看:

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);

出來(lái)的結(jié)果是這樣的,注意它的高粱顏色有不一樣了:

這里可以看到:public就用 + 表示,private 就用 - 表示,而protected 就用 # 表示。不見(jiàn)如此,如果你仔細(xì)看圖,你會(huì)看到當(dāng)鼠標(biāo)浮在對(duì)應(yīng)的屬性上面的時(shí)候,會(huì)有一個(gè)小小的提示框來(lái)提醒我們這個(gè)具體是什么,很完美啊。

我們既然需要測(cè)試,那么在類(lèi)中添加對(duì)應(yīng)的方法呢,這個(gè)到底會(huì)給我們什么樣的調(diào)試反饋呢?

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);


表現(xiàn)依然很驚艷:

在上圖中,你不僅可以很清晰地知道各個(gè)方法的類(lèi)名是什么,也可以知道this代表的是什么,甚至還可以知道這個(gè)代碼段是從第幾行開(kāi)始第幾行結(jié)束的!666...

最后

可能很多同學(xué)看了這篇文章之后會(huì)覺(jué)得我們?cè)谧远x樣式時(shí)直接改文件不太好,因?yàn)檫@個(gè)時(shí)候,如果你切換到其他的項(xiàng)目,你還是得重新再安裝一次,難道還得再改一次?不是這樣的,其實(shí)我推薦大家的做法是:全局安裝Symfony VarDumper,這樣不僅可以解決樣式一次性問(wèn)題,還可以讓你在任何項(xiàng)目中使用Symfony VarDumper,安裝方法如下:

第一步,全局安裝:

composer global require symfony/var-dumper;

第二:配置php.ini

在php.ini中找到auto_prepend_file,然后寫(xiě)上你相對(duì)應(yīng)的路徑,比如像下面這樣的:

 auto_prepend_file = ${HOME}/.composer/vendor/autoload.php 

最后,更新composer

直接命令行執(zhí)行:

composer global update

到這里,你就可以配置好一個(gè)很優(yōu)雅的調(diào)試界面了。反正我是很喜歡,不知道你是什么感受。

Happy Hacking

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21053.html

相關(guān)文章

  • 使用VarDumper進(jìn)行優(yōu)雅PHP調(diào)試

    摘要:每個(gè)打印出來(lái)的對(duì)象或變量都有特定的樣式。安裝使用之說(shuō)了這么多之后,我們終于要來(lái)一睹廬山真面目了。 很多PHP開(kāi)發(fā)者在寫(xiě)代碼的時(shí)候用到var_dump()這個(gè)函數(shù),很多人都會(huì)直接用類(lèi)似die(var_dump($var))來(lái)查看一個(gè)變量或者一個(gè)實(shí)例到底是長(zhǎng)什么樣的,稍微有一些人可能還直接封裝過(guò):比如直接叫一個(gè)vdd()等,以便于自己在調(diào)試自己的代碼的時(shí)候使用。這種方式一直陪伴著我走過(guò)了這...

    wanghui 評(píng)論0 收藏0
  • YII2項(xiàng)目常用技能知識(shí)總結(jié)

    摘要:不通過(guò)日志獲取執(zhí)行的原生語(yǔ)句和打印變量數(shù)據(jù)打印變量數(shù)據(jù)可以這樣寫(xiě)引用命名空間使用使用第二個(gè)參數(shù)是數(shù)組的深度第三個(gè)參數(shù)是是否顯示代碼高亮默認(rèn)不顯示從數(shù)據(jù)庫(kù)二維數(shù)組中返回一維數(shù)組并配合驗(yàn)證規(guī)則實(shí)現(xiàn)分類(lèi)數(shù)據(jù)過(guò)濾。 1、不通過(guò)日志獲取AR執(zhí)行的原生SQL語(yǔ)句和打印變量數(shù)據(jù) $query = User::find() ->select([username])->where([id=>[1,2,3...

    W_BinaryTree 評(píng)論0 收藏0
  • yii2實(shí)戰(zhàn)之用戶(hù)注冊(cè)登錄

    摘要:繼控制器與視圖交互,本篇將講解如何自定義全局函數(shù),以及使用自帶的用戶(hù)注冊(cè)登錄功能全局函數(shù)有時(shí)候我們希望自定義一些函數(shù),可以在全局中調(diào)用,如默認(rèn)的在頁(yè)面上的顯示效果并不好,尤其是多層級(jí)數(shù)組的情況下,一大坨數(shù)據(jù)很難分辨。 繼控制器與視圖交互,本篇將講解如何自定義全局函數(shù),以及使用yii自帶的用戶(hù)注冊(cè)登錄功能 全局函數(shù) 有時(shí)候我們希望自定義一些函數(shù),可以在全局中調(diào)用,如php默認(rèn)的var_d...

    Hegel_Gu 評(píng)論0 收藏0
  • Laravel中優(yōu)雅驗(yàn)證日期需要大于今天

    摘要:我們有時(shí)會(huì)碰到一個(gè)場(chǎng)景,比如買(mǎi)車(chē)票,需要進(jìn)行查詢(xún)車(chē)票剩余,這時(shí)候需要一個(gè)日期范圍,開(kāi)始日期必須大于等于今天,結(jié)束日期必須大于等于開(kāi)始日期。通過(guò)增加一個(gè)額外的字段,然后通過(guò)這個(gè)字段限制范圍。測(cè)試發(fā)現(xiàn)實(shí)際并不生效。 我們有時(shí)會(huì)碰到一個(gè)場(chǎng)景,比如買(mǎi)車(chē)票,需要進(jìn)行查詢(xún)車(chē)票剩余,這時(shí)候需要一個(gè)日期范圍,開(kāi)始日期必須大于等于今天,結(jié)束日期必須大于等于開(kāi)始日期。 Version Laravel 5...

    summerpxy 評(píng)論0 收藏0
  • Laravel Telescope:優(yōu)雅應(yīng)用調(diào)試工具

    摘要:文章轉(zhuǎn)自視頻教程優(yōu)雅的應(yīng)用調(diào)試工具新擴(kuò)展是由和開(kāi)源的應(yīng)用的調(diào)試工具。計(jì)劃任務(wù)列出已運(yùn)行的計(jì)劃任務(wù)。該封閉函數(shù)會(huì)被序列化為一個(gè)長(zhǎng)字符串,加上他的哈希與簽名如出一轍該功能將記錄所有異常,并可查看具體異常情況。事件顯示所有事件的列表。 文章轉(zhuǎn)自:https://laravel-china.org/topics/19013視頻教程:047. 優(yōu)雅的應(yīng)用調(diào)試工具--laravel/telesco...

    MasonEast 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<