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

Модуль 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 > strpt[TAB]ime(

Додаток також працює для імен, які були оголошені протягом даної інтерактивної сесії:

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 в інтерактивній консолі

Настройка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 підтримує кілька керуючих послідовностей:

Керуючі послідовності 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 без параметра -aoption.

Починаючи з PHP 8.1.0, виклик CLI SAPI з параметром -a завершується помилкою, якщо модуль readline недоступний.