Интерактивная консоль

Начиная с вверсии PHP 5.1.0, модуль CLI SAPI предоставляет интерактивную консоль, доступную с помощью опции -a , если PHP был скомпилирован с опцией --with-readline .

Интерактивная консоль позволяет непосредственно набирать и одновременно выполнять PHP-код.

Пример #1 Запуск кода в интерактивной консоли

[php]$ 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 >[/php]

Интерактивная консоль также автодополняет (с помощью клавиши Tab) имена функций, констант, классов, переменных, вызовы статических методов и константы классов.

Пример #2 Автодополнение по Tab

Двойное нажатие клавиши Tab при наличии нескольких вариантов дополнения покажет список этих вариантов:


[php]php > strp[TAB][TAB] strpbrk strpos strptime php > strp[/php]

Если доступно только одно дополнение, одиночное нажатие Tab дополнит оставшийся текст на той же самой строке:


[php]php > strpt[TAB]ime([/php]

Дополнение также работает для элементов, которые были объявлены в течении данной интерактивной сессии:


[php]php > $fooThisIsAReallyLongVariableName = 42; php > $foo[TAB]ThisIsAReallyLongVariableName[/php]

Интерактивная консоль хранит историю команд, для доступа к ней можно использовать стрелки вверх и вниз. История хранится в файле ~/.php_history.

Начиная с версии PHP 5.4.0, модуль CLI SAPI предоставляет две новые настройки в php.ini:cli.pager и cli.prompt. Настройка cli.pager позволяет использовать внешнюю программу (такую как less) для постраничного просмотра данных вместо их прямого вывода на экран. Настройка cli.prompt позволяет задавать приглашение php > на ввод команды.

С PHP 5.4.0 также можно устанавливать настройки php.ini в интерактивной консоли используя специальное сокращение.

Пример #3 Установка настройки php.ini в интерактивной консоли

Настройка cli.prompt:


[php]php > #cli.prompt=hello world :> hello world :>[/php]

Используя обратные апострофы можно задать PHP код, который выполнится в приглашении на ввод команды:


[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 >[/php]

Установка less для постраничного вывода данных:


[php]php > #cli.pager=less php > phpinfo(); (output displayed in less) php >[/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 обрабатываются в этом режиме с некоторыми ограничениями, например, функции должны быть объявлены до их использования.

Замечание:

Автозагрузка недоступна при использовании интерактивного режима PHP CLI.


User Contributed Notes 8 notes



21
Ryan P1 year ago

Наша группа в телеграмм для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov
' in order to execute code.
Interactive shell evaluates every expression as you complete it (with ; or }), reports errors without terminating execution, and supports standard shell functionality via readline (history, tab completion, etc). It's an enhanced version of interactive mode that is ONLY available if you have the required libraries, and is an actual PHP shell that interprets everything you type as PHP code - using '<?php' will cause a parse error.
Finally, if you're running on Windows, you're probably screwed. From what I'm seeing in other comments here, you don't have readline, and without readline there is no interactive shell. 
 
10 
 spencer at aninternetpresence dot net ¶2 years ago
 In Windows, press Enter after your ending PHP tag and then hit Ctrl-Z to denote the end-of-file:
C:\>php -a
Interactive mode enabled
<?php
echo "Hello, world!";


4
Anonymous3 years ago
$fp = fopen("php://stdin", "r");
$in = '';
while($in != "quit") {
    echo "php> ";
    $in=trim(fgets($fp));
    eval ($in);
    echo "\n";
    }
   


0
alexandrebr at gmail dot com2 years ago
echo "Hello World!\r\n";
(Hit CTRL+D here)
Hello World!
This is NOT interactive mode, but may help you.
To have the "-i" available, you'll need the following arguments while compiling PHP:
--with-readline e --with-libedit 
 
0 
 Shane Harter ¶5 months ago
 If you've ever wanted to build your own interactive shell, I released a project recently that makes it insanely easy to build awesome shell apps in PHP. It blends features from Zend2 and Symonfy2 with things like regex routing, state management, etc. Check it out here: 
https://github.com/shaneharter/sheldon 
 
0 
 lee8oi at gmail dot com ¶1 year ago
 I use git-bash in windows to connect to my servers via SSH. When I use the interactive mode via 'php -a' command I have to hit ctrl+d twice to execute the entered code. Example:
(<ctrl+d> denotes hitting ctrl & D)
-bash$ php -a
Interactive mode enabled
<?php
echo 'hello world';


0
xEviL2 years ago
When building php on FreeBSD from ports one can add --with-readline option by manually editing the var CONFIGURE_ARGS in Makefile inside the php port directory and proceeding with build as usual.




Смотрите также:
Описание на ru2.php.net
Описание на php.ru

.

Популярное:


Содержание: