PsySH--PHP互動式控制台

來源:互聯網
上載者:User

PsySH

PsySH is a runtime developer console, interactive debugger and REPL for PHP.

PsySH是一個PHP的運行時開發平台,互動式調試器和Read-Eval-Print Loop (REPL)。

說的簡單點,就像你用firebug的console調試你的JavaScript代碼一樣。

  • PsySH官網
  • GitHub
  • Packagist

安裝

官網介紹了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()試試?

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.