TypePHP\Qt
Build native desktop apps with TypePHP (AOT) + Qt 6 — describe the UI as a PHP array, keep every decision in PHP
Declarative UI
Describe the widget tree as a PHP array; the C++ side diffs it by id. Cursor position, table selection and scroll offset survive every re-render.
State-driven
Event handlers only change state. The builder registered with view() re-describes the UI each frame, making the widget layer a pure function of state.
PHP owns the loop
PHP drives the Qt event pump, so all business logic stays in PHP and unit-tests with a plain PHP interpreter — no Qt, no compiler.
Source-inlined bridge
The bridge C++ compiles as part of your app. No prebuilt binary, so it can never drift from your Qt or PHPX version.
One-command packaging
qtphp package assembles a self-contained bundle and verifies it — dist/ on Windows, a .app on macOS, an ldd closure on Linux.
Headless verification
--shot renders a PNG, --selftest fires every event, --difftest covers table/tree diff boundaries. No display needed in CI.