phpEnv 4.22.10 采用 PHP-UI 扩展构建本地桌面级 GUI,不依赖浏览器;UI 分为 Window、Control、Menu 三层;导航通过控件切换或弹窗实现;绘图由 Pen 统一调度;需显式调用 UI\run() 启动事件循环。

phpEnv 4.22.10 的全新 UI 交互逻辑并非基于 PHP 原生 Web 界面,而是依托 PHP-UI 扩展(v0.9.9) 构建的本地桌面级图形界面。它不依赖浏览器,所有窗口、控件与导航均由 PHP 进程直接驱动,交互响应更接近原生应用。
UI 核心组件与职责划分
新版 UI 将界面拆解为三层职责明确的实体:
- UI\Window:作为顶层容器,管理尺寸、标题、全屏/边框状态及生命周期回调(如 onClosing);每个 phpEnv 实例默认启动一个主窗口
- UI\Control:所有可交互元素(按钮、文本框、标签等)的基类,提供 enable/disable、show/hide、isVisible 等统一控制方法
- UI\Menu:独立于窗口内容区的顶部菜单栏,支持 append、appendQuit、appendAbout 等语义化添加方式,无需手动拼接 HTML 或 DOM 操作
导航行为由 Window 生命周期驱动
phpEnv 不采用传统“页面跳转”式导航,而是通过窗口内控件切换视图或打开新窗口实现导航:
- 主窗口调用
$window->add($control)动态插入控件,例如点击“配置”按钮后移除当前面板、添加 SettingsControl 实例 - 子功能(如日志查看、服务管理)以独立
UI\Window形式弹出,支持模态(open())或非模态(show())显示 - 关闭子窗口时自动触发其 onClosing 回调,可执行清理操作(如释放 Pen 资源、保存临时状态)
绘图与文字渲染由 Pen 统一调度
所有可视化输出(包括自定义图表、状态指示器、富文本标签)均通过 UI\Draw\Pen 完成:
立即学习“PHP免费学习笔记(深入)”;
- Pen 支持
stroke()(描边)、fill()(填充)、clip()(裁剪)、write()(文字绘制)四类核心操作 - 文字渲染需先构建
UI\Draw\Text\Layout对象,指定字体、字号、换行策略,再传入pen->write($point, $layout) - 每次绘制前建议调用
pen->save(),绘制完成后pen->restore(),避免矩阵变换或颜色状态污染后续控件
启动与事件循环必须显式调用
phpEnv 4.22.10 不会自动进入 UI 循环,需在脚本末尾明确执行:
-
UI\run()启动主事件循环,接管系统消息(鼠标、键盘、窗口事件) - 若需后台任务并行运行,应使用
UI\run(UI\Loop::NonBlocking)配合定时器或异步 I/O,避免阻塞 UI 响应 - 退出前确保所有
UI\Window已关闭或销毁,否则UI\run()不会自然返回控制权



















