Модуль CLISAPI предоставляет интерактивную консоль, используя опцию -a, если PHP был скомпилирован с опцией --with-readline. Начиная с PHP PHP 7.1.0, интерактивная консоль также доступна на Windows, если модуль readline включён.
Используя интерактивную консоль, можно ввести и выполнить непосредственно PHP-код.
Пример #1 Запуск кода в интерактивной консоли
$ 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 >
Интерактивная консоль также автодополняет (с помощью клавиши Tab) имена функций, констант, классов, переменных, вызовы статических методов и константы классов.
Пример #2 Автодополнение по Tab
Двойное нажатие клавиши Tab при наличии нескольких вариантов дополнения покажет список этих вариантов:
php > strp[TAB][TAB] strpbrk strpos strptime php > strp
Когда есть только одно дополнение, одиночное нажатие Tab дополнит оставшийся текст на той же самой строке:
php > strpt[TAB]ime(
Дополнение также работает для имён, которые были объявлены в течение данной интерактивной сессии:
php > $fooThisIsAReallyLongVariableName = 42; php > $foo[TAB]ThisIsAReallyLongVariableName
Интерактивная консоль хранит историю команд, для доступа к которой можно использовать стрелки вверх и вниз. История хранится в файле ~/.php_history.
Модуль CLISAPI предоставляет две новые настройки в php.ini: cli.pager
и cli.prompt
. Настройка cli.pager
позволяет использовать внешнюю программу (такую как less) для постраничного просмотра данных вместо их прямого вывода на экран. Настройка cli.prompt
позволяет задавать приглашение php >
на ввод команды.
Также можно устанавливать настройки php.ini в интерактивной консоли, используя специальное сокращение.
Пример #3 Установка настройки 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 . |
\> | Указывает символ приглашения. По умолчанию это символ > , но можно изменить, когда оболочка находится внутри незакрытого блока или строки. Возможные символы: ' " { ( > |
Замечание:
Файлы, подключённые с помощью опций auto_prepend_file и auto_append_file обрабатываются в этом режиме с некоторыми ограничениями, например, функции должны быть объявлены до их использования.
Если модуль readline недоступен, то до PHP 8.1.0 вызов файла CLISAPI с параметром -a обеспечивал интерактивный режим. В этом режиме предполагается, что полный скрипт PHP передаётся через STDIN, а после завершения скрипт оценивается с помощью CRTL+d
(POSIX) или CTRL+z
с последующим ENTER
(Windows). По сути это то же самое, что и вызов CLISAPI без параметра -a. option.
Начиная с PHP 8.1.0, вызов CLISAPI с параметром -a завершается ошибкой, если модуль readline недоступен.