PsySH——PHP互動式控制檯

發表於2016-03-27

PsySH

PsySH是一個PHP的執行時開發平臺,互動式偵錯程式和Read-Eval-Print Loop (REPL)。

說的簡單點,就像你用firebug的console除錯你的JavaScript程式碼一樣。

安裝

官網介紹了3種安裝方式:

  • 直接下載
  • Composer安裝
  • 直接cloneGitHub倉庫的程式碼

我比較建議選擇Composer安裝,因為這個專案還有其他的依賴專案,用Composer很好解決這個問題。

以下教程以OS X和Windows 10為例,假定已經安裝phpComposer並已經將它們設定為系統環境變數:

OS X

先用Composer下載PsySH,這裡用的是全域性安裝:

安裝完畢後,PsySH已經安裝到/Users/{使用者名稱}/.composer/vendor/psy/psysh目錄下

此時,你可以直接執行:

為了使用方便,建議將它加入到環境變數:

Windows

同樣地,使用Composer安裝,按win鍵+R鍵,輸入cmd,開啟windows控制檯,然後:

安裝完成後,PsySH被安裝到C:Users{使用者名稱}AppDataRoamingComposervendorpsypsysh

因為bin/psysh檔案並不是windows的可執行檔案,所以需要使用以下命令執行PsySH

為了使用方便,在C:Users{使用者名稱}AppDataRoamingComposervendorpsypsyshbin目錄下新建一個名為psysh.bat的檔案,其內容如下:

此時,把C:Users{使用者名稱}AppDataRoamingComposervendorpsypsyshbin加入到系統的環境變數PATH,以後可以直接在cmd下執行psysh了:

特性

上面說過,PsySH是一個互動式的PHP執行控制檯,在這裡,你可以寫php程式碼執行,並且可以清楚看到每次的返回值:

並且,它很智慧地知道你的程式碼是否已經結束

自動完成

PsySH可以像控制檯那樣,按下兩次鍵自動補全,幫你自動完成變數名,函式,類,方法,屬性,甚至是檔案:

文件

在執行時忘記引數怎麼辦?PsySH的文件功能可以讓你即時檢視文件。

PsySH的文件存放在~/.local/share/psysh/。(windows系統存放在C:Users{使用者名稱}AppDataRoamingPsySH

文件下載地址:

下載中文文件:

OK,完成後重新開啟PsySH

而且還自帶分頁功能(和more命令一樣)

當然,自定義的物件也可以有相關功能:

比如,test.php這個檔案有如下內容:

檢視原始碼

輕鬆展現任何使用者級的物件,類,介面,特質,常數,方法或屬性的原始碼:

接著上一個例子:

檢視show的幫助,使用help show命令:

反射列表

list命令知道所有關於你的程式碼 – 和其他人的。輕鬆地列出並搜尋所有的變數,常量,類,介面,特點,功能,方法和屬性。

更多用法,可以輸入help list命令檢視。

獲取最後的異常資訊

如果忘記catch異常,可以使用wtf命令(wtf是what the fuck的意思麼?)檢視異常的資訊:

歷史記錄

可以像類Unix系統的history命令一樣,在PsySH可以檢視你執行過的PHP程式碼或命令。詳情執行help history命令檢視。

退出

使用exit命令退出你的PsySH

help

最好用的命令,help或者?,它能幫助你瞭解一切的命令

28.png

在內建web server中除錯

本來想用Laravel做示例,但debugging的內容經常過多要分頁檢視。
而且說好的中文文章,好吧,那就用ThinkPHP為例:

首先,安裝一下ThinkPHP

16.png

然後,用Composer區域性安裝一下PsySH:

17.png

因為ThinkPHP的dump()函式和symfony/var-dumperdump()函式有重名衝突,所以需要把其中一個重新命名。個人建議把TP的改掉。為啥?因為symfony的好用多了。。。

19.png

在入口檔案index.php新增如下3句程式碼:

20.png

在專案根目錄下,用PHP的內建web伺服器啟動:

然後即可在瀏覽器訪問你的應用: http://localhost:8080

你將會看到以下畫面,PsySH啟動了

21.png

其他操作,和CLI操作差不多。例如:

22.png

23.png

24.png

當然,那句PsyShell::debug()不一定要放在入口檔案,它可以放在你一切想要debug的地方
例如,我放在預設的首頁控制器:

25.png

重新執行php內建server並訪問頁面,然後輸入命令:

26.png

開啟PsySH後,輸入get_defined_vars()試試?

27.png

 

相關文章