成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

davidac / 611人閱讀

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

  

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

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

相遇

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

Symfony VarDumper

測試樣式是長這樣的:

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

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

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

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

每個打印出來的對象或變量都有特定的樣式。

安裝使用之

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

cd php/

composer require symfony/var-dumper

再來創(chuàng)建一個index.php,將自動加載文件autoload.php包含進來:



首先在index.php寫一個簡單的數(shù)組來測試一下:

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


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

有沒有覺得很不錯!這里還要說一點的是:如果你覺得Symfony VarDumper自帶的樣式不夠美觀,你可以直接到Dumper/HtmlDumper.php去修改你的自己的樣式,比如你很喜歡github風,你完全可以自己在這個文件里面寫你自己的css樣式。

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

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

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

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

我們既然需要測試,那么在類中添加對應的方法呢,這個到底會給我們什么樣的調(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)依然很驚艷:

在上圖中,你不僅可以很清晰地知道各個方法的類名是什么,也可以知道this代表的是什么,甚至還可以知道這個代碼段是從第幾行開始第幾行結(jié)束的!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

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

composer global update

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

Happy Hacking

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/21053.html

相關(guān)文章

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

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

    wanghui 評論0 收藏0
  • YII2項目常用技能知識總結(jié)

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

    W_BinaryTree 評論0 收藏0
  • yii2實戰(zhàn)之用戶注冊登錄

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

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

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

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

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

    MasonEast 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<