PsySH
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,這裡用的是全域性安裝:
1 |
$ composer global require psy/psysh |
安裝完畢後,PsySH已經安裝到/Users/{使用者名稱}/.composer/vendor/psy/psysh
目錄下
此時,你可以直接執行:
1 |
$ /Users/{使用者名稱}/.composer/vendor/psy/psysh/bin/psysh |
為了使用方便,建議將它加入到環境變數:
1 2 |
$ echo 'export PATH="/Users/{使用者名稱}/.composer/vendor/psy/psysh/bin:$PATH"' >> ~/.bashrc $ source ~/.bashrc |
Windows
同樣地,使用Composer安裝,按win鍵+R鍵,輸入cmd,開啟windows控制檯,然後:
1 |
composer global require psy/psysh |
安裝完成後,PsySH被安裝到C:Users{使用者名稱}AppDataRoamingComposervendorpsypsysh
因為bin/psysh檔案並不是windows的可執行檔案,所以需要使用以下命令執行PsySH
1 |
php C:Users{使用者名稱}AppDataRoamingComposervendorpsypsyshbinpsysh |
為了使用方便,在C:Users{使用者名稱}AppDataRoamingComposervendorpsypsyshbin
目錄下新建一個名為psysh.bat
的檔案,其內容如下:
1 2 |
<a href="http://www.jobbole.com/members/echo">@ECHO</a> OFF php "%~dp0psysh" %* |
此時,把C:Users{使用者名稱}AppDataRoamingComposervendorpsypsyshbin
加入到系統的環境變數PATH,以後可以直接在cmd下執行psysh
了:
1 2 3 |
C:UsersVergil>psysh Psy 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
下載中文文件:
1 2 3 4 |
$ 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伺服器啟動:
1 |
php -S localhost:8080 |
然後即可在瀏覽器訪問你的應用: http://localhost:8080
你將會看到以下畫面,PsySH啟動了
其他操作,和CLI操作差不多。例如:
1 |
ls -al ThinkModel |
1 |
show \Think\Model::find |
1 |
doc \Think\Model::save |
當然,那句PsyShell::debug()
不一定要放在入口檔案,它可以放在你一切想要debug的地方
例如,我放在預設的首頁控制器:
重新執行php內建server並訪問頁面,然後輸入命令:
1 |
ls -al |
開啟PsySH後,輸入get_defined_vars()試試?