Интерактивная консоль
Модуль CLI SAPI предоставляет
интерактивную консоль, используя опцию
-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 > $fooThisIsAReallyLongVariableName = 42;
php > $foo[TAB]ThisIsAReallyLongVariableName
Интерактивная консоль хранит историю команд, для доступа к которой
можно использовать стрелки вверх и вниз.
История хранится в файле ~/.php_history.
Модуль CLI SAPI предоставляет
две новые настройки в php.ini: cli.pager
и
cli.prompt
. Настройка cli.pager
позволяет использовать внешнюю программу (такую как less)
для постраничного просмотра данных вместо их прямого вывода на экран.
Настройка cli.prompt
позволяет задавать
приглашение php >
на ввод команды.
Также можно устанавливать настройки php.ini в интерактивной
консоли, используя специальное сокращение.
Пример #3 Установка настройки php.ini в интерактивной консоли
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
поддерживает
несколько управляющих последовательностей:
Управляющие последовательности 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 вызов файла CLI SAPI с параметром -a обеспечивал интерактивный режим.
В этом режиме предполагается, что полный скрипт PHP передаётся через STDIN, а после завершения скрипт оценивается с помощью CRTL+d
(POSIX) или CTRL+z
с последующим ENTER
(Windows).
По сути это то же самое, что и вызов CLI SAPI без параметра -a.
option.
Начиная с PHP 8.1.0, вызов CLI SAPI с параметром -a завершается ошибкой, если модуль readline недоступен.