互動式 shell
如果 PHP 使用 --with-readline 選項編譯,則 CLI SAPI 使用 -a 選項時會提供互動式 shell。自 PHP 7.1.0 起,如果啟用了 readline 擴充套件 ,互動式 shell 也可以在 Windows 上使用。
使用互動式 shell,你可以輸入 PHP 程式碼並直接執行。
示例 #1 使用互動式 shell 執行程式碼
$ php -a
Interactive shell
php > echo 5+8;
13
php > function addTwo($n)
php > {
php { return $n + 2;
php { }
php > var_dump(addtwo(2));
int(4)
php >
互動式 shell 還有對函式、常量、類名、變數、靜態方法呼叫和類常量的 Tab 鍵補全功能。
示例 #2 Tab 鍵補全
當可能有多個補全時,按兩次 Tab 鍵將會得到補全列表:
php > strp[TAB][TAB] strpbrk strpos strptime php > strp
當僅可能有一個補全,按一次 Tab 鍵即可在同一行中補全剩餘:
php > strpt[TAB]ime(
補全也適用於目前互動式 shell 會話期間定義的名稱:
php > $fooThisIsAReallyLongVariableName = 42; php > $foo[TAB]ThisIsAReallyLongVariableName
互動式 shell 會儲存你的操作歷史記錄,可以通過上下鍵訪問。歷史記錄儲存于 ~/.php_history 檔案。
   CLI SAPI 提供了 cli.pager 和
   cli.prompt 兩個 php.ini 配置。cli.pager
   配置允許外部程式(例如 less)充當分頁器輸出而不是直接在螢幕上顯示。
   cli.prompt 配置可以更改 php > 提示符。
  
在互動式 shell 中還可以使用縮寫符號設定 php.ini 配置。
示例 #3 在互動式 shell 中設定 php.ini 配置
    cli.prompt 配置:
   
php > #cli.prompt=hello world :> hello world :>
使用反引號可以在提示中執行 PHP 程式碼:
php > #cli.prompt=`echo date('H:i:s');` php > 
15:49:35 php > echo 'hi';
hi
15:49:43 php > sleep(2);
15:49:45 php >
設定分頁器為 less:
php > #cli.pager=less php > phpinfo(); (output displayed in less) php >
   cli.prompt 配置支援一些轉義字元:
   
| 字元 | 描述 | 
|---|---|
| \e | 用於新增提示符顏色。一個例子是 \e[032m\v \e[031m\b \e[34m\> \e[0m | 
| \v | PHP 版本。 | 
| \b | 指明 PHP 所在的塊。例如 /*表示在多行註釋中。外部作用域用php來表示。 | 
| \> | 指明提示字元。預設是 >,但當 shell 位於未結束的塊或者字串時會發生變化。可能的字元有' " { ( > | 
注意:
在該模式下,通過 auto_prepend_file 和 auto_append_file 解析載入的檔案會有一些限制 —— 例如函式必須在呼叫前定義。
互動模式
    如果 readline 擴充套件不可用,在 PHP 8.1.0 之前,使用 -a 選項呼叫 CLI SAPI 會提供互動模式。
    在此模式中,一個完整的 PHP 指令碼應該通過 STDIN 給出,並用 CRTL+d (POSIX) 或者 CTRL+z
    終止然後 ENTER (Windows),指令碼執行。這與不加 -a 選項呼叫 CLI SAPI 基本相同。
   
自 PHP 8.1.0 起,如果 readline 擴充套件不可用,使用 -a 呼叫 CLI SAPI 會失敗。