INDEX

📅 2026/3/13 ✍️ Bullsoft

vphp

vphp 是这个技术栈的底层语言桥。

如果 vslim 是框架层,vhttpd 是运行时层,那么 vphp 负责回答的是:

  • V 代码怎么导出成 PHP class / function / enum / interface
  • V 代码怎么调用 PHP / Zend 世界里的函数、类、对象、属性、常量
  • 两边对象、ZVal、所有权、生命周期怎么桥接

一句话定义:

  • vphp = Zend Binding for Vlang

它解决什么问题

vphp 不是普通 PHP 扩展脚手架。

它的目标更接近:

  • 让 V 成为 PHP 的实现语言之一
  • 让 V 类型能导出到 PHP
  • 让 V 运行时能安全调用 Zend userland / internal symbols
  • 让上层框架和运行时可以直接复用这套桥接能力

所以它既有:

  • V -> PHP interop
  • 也有 V -> Zend export

Core Areas

1. PHP Interop

这是 vphp 最基础的一层。

核心对象是:

  • ZVal

V 侧通过 ZVal 完成:

  • 调 PHP 函数
  • 构造 PHP 对象
  • 调实例方法 / 静态方法
  • 读写属性 / 静态属性
  • 取类常量
  • 把结果转回 V 标量或 V 导出对象

更细文档:

2. PHP-facing OOP Export

这层回答“V 代码怎么导出成 PHP 类体系”。

当前重点能力包括:

  • @[php_class]
  • @[php_trait]
  • @[php_method]
  • @[php_interface]
  • @[php_enum]
  • @[php_abstract]
  • @[php_extends: 'ParentClass']
  • @[php_const: shadow_const]
  • @[php_static: shadow_static]
  • @[php_attr: 'AttributeName(...)']

更细文档:

3. Compiler / Export Pipeline

vphp 不只是运行时 API,也包含一套导出编译链:

  • parser
  • repr
  • builder
  • emitter
  • export

入口说明:

Current Product Role

在整个 PHP + Vlang 技术栈里,vphp 现在扮演的是:

  • 语言桥接层
  • Zend 导出层
  • 上层 vslim / vhttpd 的基础设施层

也就是说:

  • vphp 不直接定义应用模型
  • vphp 也不直接定义 runtime
  • 它负责让上层框架和运行时具备“V 驱动 PHP”的能力

Current Highlights

从当前代码状态看,比较关键的能力有:

  • 基于 ZVal 的统一 interop 入口
  • request-owned / persistent-owned / borrowed 所有权模型
  • V 导出 PHP class / trait / interface / enum
  • PHP 8 class attribute 导出
  • V 导出对象恢复成 typed object pointer

如果你第一次看 vphp,推荐顺序:

  1. 先看这页
  2. 再看 docs/interop.md
  3. 再看 docs/oop_features.md
  4. 最后看 compiler/README.md