PsySH
PsySH is a runtime developer console, interactive debugger and REPL for PHP.
PsySH是一個PHP的運行時開發平台,互動式調試器和Read-Eval-Print Loop (REPL)。
說的簡單點,就像你用firebug的console調試你的JavaScript代碼一樣。
安裝
官網介紹了3種安裝方式:
- 直接下載
- Composer安裝
- 直接cloneGitHub倉庫的代碼
我比較建議選擇Composer安裝,因為這個項目還有其他的依賴項目,用Composer很好解決這個問題。
以下教程以OS X和Windows 10為例,假定已經安裝php和Composer並已經將它們設定為系統內容變數:
OS X
先用Composer下載PsySH,這裡用的是全域安裝:
$ composer global require psy/psysh
安裝完畢後,PsySH已經安裝到/Users/{使用者名稱}/.composer/vendor/psy/psysh目錄下
此時,你可以直接運行:
$ /Users/{使用者名稱}/.composer/vendor/psy/psysh/bin/psysh
為了使用方便,建議將它加入到環境變數:
$ echo 'export PATH="/Users/{使用者名稱}/.composer/vendor/psy/psysh/bin:$PATH"' >> ~/.bashrc$ source ~/.bashrc
Windows
同樣地,使用Composer安裝,按win鍵+R鍵,輸入cmd,開啟windows控制台,然後:
composer global require psy/psysh
安裝完成後,PsySH被安裝到C:Users{使用者名稱}AppDataRoamingComposervendorpsypsysh
因為bin/psysh檔案並不是windows的可執行檔,所以需要使用以下命令運行PsySH
php C:Users{使用者名稱}AppDataRoamingComposervendorpsypsyshbinpsysh
為了使用方便,在C:Users{使用者名稱}AppDataRoamingComposervendorpsypsyshbin目錄下建立一個名為psysh.bat的檔案,其內容如下:
@ECHO OFFphp "%~dp0psysh" %*
此時,把C:Users{使用者名稱}AppDataRoamingComposervendorpsypsyshbin加入到系統的環境變數PATH,以後可以直接在cmd下運行psysh了:
C:UsersVergil>psyshPsy Shell v0.6.1 (PHP 5.6.8 — cli) by Justin Hileman>>>
特性
上面說過,PsySH是一個互動PHP運行控制台,在這裡,你可以寫php代碼運行,並且可以清楚看到每次的傳回值:
並且,它很智能地知道你的代碼是否已經結束
自動完成
PsySH可以像控制台那樣,按下兩次鍵自動補全,幫你自動完成變數名,函數,類,方法,屬性,甚至是檔案:
文檔
在運行時忘記參數怎麼辦?PsySH的文檔功能可以讓你即時查看文檔。
PsySH的文檔存放在~/.local/share/psysh/。(windows系統存放在C:Users{使用者名稱}AppDataRoamingPsySH)
文檔下載地址:
- English
- Brazilian Portuguese
- Chinese (Simplified)
- French
- German
- Italian
- Japanese
- Polish
- Romanian
- Russian
- Persian
- Spanish
- Turkish
下載中文文檔:
$ cd ~/.local/share $ mkdir psysh$ cd psydh$ wget http://psysh.org/manual/zh/php_manual.sqlite
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或者?,它能協助你瞭解一切的命令
在內建web server中調試
本來想用Laravel做樣本,但debugging的內容經常過多要分頁查看。而且說好的中文文章,好吧,那就用ThinkPHP為例:
首先,安裝一下ThinkPHP
然後,用Composer局部安裝一下PsySH:
因為ThinkPHP的dump()函數和symfony/var-dumper的dump()函數有重名衝突,所以需要把其中一個重新命名。個人建議把TP的改掉。為啥?因為symfony的好用多了。。。
在入口檔案index.php添加如下3句代碼:
在項目根目錄下,用PHP的內建web伺服器啟動:
php -S localhost:8080
然後即可在瀏覽器訪問你的應用: http://localhost:8080
你將會看到以下畫面,PsySH啟動了
其他動作,和CLI操作差不多。例如:
ls -al ThinkModel
show \Think\Model::find
doc \Think\Model::save
當然,那句PsyShell::debug()不一定要放在入口檔案,它可以放在你一切想要debug的地方例如,我放在預設的首頁控制器:
重新運行php內建server並訪問頁面,然後輸入命令:
ls -al
開啟PsySH後,輸入get_defined_vars()試試?