1. 程式人生 > 實用技巧 >PHP大物件除錯利器

PHP大物件除錯利器

PHP現代的框架,比如Yii、Laravel、或者是Swoole 的企業級框架Hyperf,都不約而同的使用了依賴注入、控制反轉的設計模式。 這對於開發來講說,如何注入物件和獲取物件,變成了黑盒。DI容器裝載了APP應用的所有的服務,當我們去除錯程式碼時,通常會被海量的列印資訊所嚇到。面對冗餘的資訊,實際上大多數時候,我們已經準備放棄了去一探究竟的想法。

工欲善其事必先利其器,下面我們利用Symfonyvar_dump元件來滿足簡明扼要的檢視除錯物件的需求。

1、引入 VarDumper 元件

composer require symfony/var-dumper

2、裝飾VarDumper

# 要放在 require BASE_PATH . '/vendor/autoload.php'; 之後
VarDumper::setHandler(function ($var) {
    $cloner = new VarCloner();
    //$cloner->setMaxItems(2);  // 設定一個巢狀級別(past the first nesting level)被克隆的元素的最大值
    $cloner->setMinDepth(1);  // 在深度上的剝離限制。
    $cloner->setMaxItems(5);
    $dumper = 'cli' === PHP_SAPI ? new CliDumper() : new HtmlDumper();
    $dumper->dump($cloner->cloneVar($var));
});

具體的setMaxItems展示迭代元素數量 和 setMinDepth 深度資訊。可以根據具體的需要調整。

參考文件: VarDumper元件 VarDumper元件高階用法

用法:在任何需要列印的地方呼叫如下函式

dump($obj);

3、比較效果 var_dumpdump 的區別

dump 截圖,展示結果速度非常快。只展示了簡明扼要的結構資訊。幫助快速瞭解物件資訊。

var_dump 截圖,展示結果速度非常慢,花費了快一分鐘。展示了物件內的所有資訊,根本找不到自己想要尋找的資訊。