概述
连连看在文章结尾哦!

当所有人都在争论 Electron 太重、Tauri 太新、Flutter Desktop 生态不行的时候,有人正在用 PHP 自研一整套 GUI 框架——从 Vue 语法的模板编译器,到 CSS 选择器引擎,再到 Skia 渲染后端,全部手搓。
这是个什么项目
最近在 GitHub 上翻到一个叫 Px 的仓库,它的自我介绍只有一句话:
GUI Framework powered by Swoole AOT - TypePHP
翻译成人话:用 PHP 写桌面 GUI 应用,模板语法长得像 Vue 3,最终编译成不依赖 PHP 运行时的原生 Windows exe。
第一反应是“这不可能”,第二反应是“这哥们疯了”,看完源码之后的第三反应是——这套技术路线居然是通的。
整条编译链路是这样的:
.vue 单文件组件
↓ sfc-compiler.php(自研 SFC 编译器)
PHP 代码
↓ Swoole Compiler(AOT 编译)
C++ 代码
↓ MSVC
原生 .exe
没错,你写的是 Vue 风格的 .vue 文件,跑起来的是一个 C++ 编译出来的 Windows 原生程序,中间的胶水语言是 PHP。

仓库地址:https://github.com/xingye00186/Px/tree/dev
迷你浏览器引擎
很多人以为桌面 GUI 框架的难点在窗口和控件,其实真正的深水区是布局和渲染。Px 的做法相当激进:不套壳浏览器(Electron 路线)、不调系统 WebView(Tauri 路线),而是自己实现了浏览器引擎里最核心的那几层。
看一下它的 framework 目录:
| 模块 |
职责 |
framework/Layout/ |
布局引擎,支持 Block / Flex / Grid / Inline 四种排版模型 |
framework/Css/ |
CSS 解析:CssLength、CssValue、StylePool、选择器匹配 |
framework/Paint/ |
绘制层,带 6 个渲染后端候选 + 故障降级机制 |
framework/Text/ |
文本渲染后端:GDI / Skia / DirectWrite |
framework/Reactive/ |
原生响应式系统,用 PHP 注解 #[Reactive] 声明 |
framework/Compiler/ |
SFC 编译器,.vue → PHP |
framework/Render/ |
RenderNode 树管理 |
熟悉浏览器内核的同学看到这个列表应该会心一笑:这就是一个精简版 Blink 的模块划分——Style、Layout、Paint、Text,一层不少。

PHP 是怎么变成 exe 的
整个项目最反直觉的环节,是 PHP → C++ 的 AOT 编译,它依赖 Swoole Compiler 来完成。
AOT(Ahead-Of-Time)编译对动态语言来说是地狱难度:PHP 的动态特性——变长参数、动态属性、引用传递、闭包捕获、eval——每一个都是静态编译的天敌。
Px 的仓库里有一个 apps/ 目录,塞满了这样的子项目:
apps/aot-abstract-crash-test/ 抽象类崩溃测试
apps/aot-array-init-test/ 数组初始化测试
apps/aot-c2440-repro/ MSVC C2440 类型错误复现
apps/aot-cross-readonly/ 跨文件 readonly 属性测试
apps/aot-named-args-test/ 命名参数测试
apps/aot-reference-test/ 引用传递测试
apps/aot-dynamic-load-test/ 动态加载测试
...
每一个目录都是一颗踩过的雷。aot-c2440-repro 这种命名(C2440 是 MSVC 的类型转换错误码)说明作者是真的在 PHP 语义和 C++ 类型系统的夹缝里一个 case 一个 case 地趟。
为了防止写出编译不过的代码,项目还配了一个 AOT 静态检查器(framework/aot-checker.php),在编译前就把不兼容的 PHP 写法拦下来。相当于给 PHP 加了一层“可编译子集”的约束——项目自称 TypePHP,大概就是这个意思。
写在最后
十年前,“用 PHP 写桌面应用”是一个段子。今天有人把它做成了:Vue 的开发体验、自研的渲染引擎、原生 exe 的交付形态。
它可能永远不会流行,但它回答了一个有意思的问题——在 AI 协作时代,一个人能把工程的边界推到多远?
对这个项目的更多讨论,欢迎来 云栈社区 交流。
连连看

下载地址:https://gitee.com/Tinywan_admin/type-php/blob/master/lumen-links-windows-x64.zip