PsySH作為偵錯程式

roy1101發表於2020-12-11
PsySH作為偵錯程式
PsySH可以用來在指令碼中設定一個斷點,在這個斷點處它將暫停並提供對shell的訪問,以檢查變數並在斷點所在位置的上下文中執行命令。目前它不支援逐步除錯(如xdebug),但在需要更少設定時也不那麼複雜。
不幸的是,也不支援通過諸如Apache或nginx或PHP-FPM等Web伺服器進行除錯。只有從命令列或通過PHP內建的Web伺服器執行PHP指令碼時才支援除錯。如果您有興趣幫助新增此功能,請參閱Github問題121
要使用PsySH作為偵錯程式,請將其安裝為Composer依賴項或直接在您的專案中包含Phar:
require' / path / to / psysh ');
然後,把這一行放到你想要有斷點的指令碼中:
eval\ Psy \ sh());
......這只是一種較短的說法:
提取\ Psy \ debug(get_defined_vars()));
當你的指令碼達到這一點時,執行將被暫停,你將被放入PsySH shell。您的程式狀態已載入並可供您檢查和試驗。
Pro Tip™:您不必使用get_defined_vars......您可以將任何您想要的內容作為除錯環境傳遞給您:
$ result = \ Psy \ debug([ ' app ' => $ myApp ]);
如果從類上下文中啟動除錯shell,則可以傳遞可選的第二個引數以將繫結物件新增到shell。這是非常有用的,因為您可以$this在除錯shell中呼叫內容,並且您將可以完全訪問當前上下文的私有和受保護成員:
\ Psy \ debug(get_defined_vars(),$ this);
如果您eval(\Psy\sh())從類上下文中呼叫快捷方式,則會$this免費獲得繫結。
更多使用資訊

相關文章