PHP大物件除錯利器
阿新 • • 發佈:2020-08-12
PHP現代的框架,比如Yii、Laravel、或者是Swoole 的企業級框架Hyperf,都不約而同的使用了依賴注入、控制反轉的設計模式。 這對於開發來講說,如何注入物件和獲取物件,變成了黑盒。DI容器裝載了APP應用的所有的服務,當我們去除錯程式碼時,通常會被海量的列印資訊所嚇到。面對冗餘的資訊,實際上大多數時候,我們已經準備放棄了去一探究竟的想法。
工欲善其事必先利其器,下面我們利用Symfony
的 var_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_dump
與 dump
的區別
dump 截圖,展示結果速度非常快。只展示了簡明扼要的結構資訊。幫助快速瞭解物件資訊。
var_dump 截圖,展示結果速度非常慢,花費了快一分鐘。展示了物件內的所有資訊,根本找不到自己想要尋找的資訊。