Інтерактивна консоль
Модуль 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 недоступний.