ZH

创建命令行应用

JumPHP 的 CLI 应用 是运行在终端里的程序:用 Symfony Console 编写的 命令(todo add "买牛奶"),以及用 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 取消),全屏界面逐个接收按键(方向键、回车、Esc)。骨架已经做好:当 JUMPHP_WEB_TERMINAL 为 1 时由 WindowsTerminal::create() 选用的 src/Ui/WebTerminal.php 和 src/Ui/WebLoop.php。它的数据(var/)保存在访问者的浏览器中。