Створити застосунок командного рядка
CLI-застосунок JumPHP — це програма, що працює в терміналі: команди (todo add "Купити молоко") на Symfony Console та повноекранні текстові екрани (списки, поля, індикатори прогресу, клавіатура) на symfony/tui. З одного проєкту виходить виконуваний файл для Linux, Windows і macOS.
Створити проєкт
У JumPHP IDE: New Project, потім CLI app. У командному рядку:
bin/jumphp cli:new todo "Todo"
bin/jumphp install todo
Приклад — список завдань: src/Main.php (застосунок і його команди), src/Command/ (один клас на команду), src/Ui/ (повноекранні екрани).
Запуск і тести
bin/jumphp run todo # повноекранний екран у цьому терміналі
bin/jumphp run todo add "Купити молоко" # команда
bin/jumphp test todo # php -l, phpstan, PHPUnit
bin/jumphp shot todo 2 # екран як текст: var/screenshots/screen.txt
Без команди застосунок відкриває свій екран, коли вивід іде в термінал, і друкує простий список, коли вивід іде у файл чи іншу програму: його можна використовувати в скриптах.
Тести виконують команди (ApplicationTester) та екрани на віртуальному терміналі (VirtualTerminal): натискають клавіші й читають те, що побачив би користувач.
Дані
Застосунок зберігає дані в теці користувача (~/.local/share/<id>, %APPDATA%\<id>, ~/Library/Application Support/<id>), а під час розробки — у var/.
Поширення
bin/jumphp export:standalone todo --linux --windows --macos
Один виконуваний файл на систему, нічого не треба встановлювати; у Windows це консольна програма. bin/jumphp installer todo також створює інсталятори (Windows, Linux).
У Windows команди та повноекранні екрани працюють у будь-якій консолі (командний рядок, PowerShell, Windows Terminal).
На jumphp.net
Опублікований на jumphp.net застосунок працює в терміналі на сторінці: там вводять його команди, і він відповідає як у справжньому терміналі. Його запитання чекають на введену відповідь (Ctrl+C скасовує їх), а повноекранні екрани отримують клавіші по одній (стрілки, Enter, Escape). Каркас уже це робить: src/Ui/WebTerminal.php і src/Ui/WebLoop.php, їх обирає WindowsTerminal::create(), коли JUMPHP_WEB_TERMINAL дорівнює 1. Його дані (var/) лишаються в браузері відвідувача.