FrankenPHP 扩展开发指南
bolt
高性能原生扩展
FrankenPHP
扩展开发指南
使用 Go 语言编写 PHP 扩展,释放协程并发潜力
rocket_launch
核心优势
- check_circle 无需 C 代码:纯 Go 开发,避开复杂的 C/CGO
- check_circle 高性能并发:直接利用 Goroutines 协程模型
- check_circle 生态复用:无缝使用现有 Go 库生态
schema
类型系统
提供公共类型 API,自动处理 PHP 与 Go 间的类型转换。
- data_object支持 Int, Float, Bool
- text_fieldsString: frankenphp.GoString
- view_listArray: frankenphp.Array
code
定义 PHP 函数
// 使用指令注释定义 PHP 函数签名
//export_php:function repeat_this(string $str, int $n): string
func repeat_this(s *C.zend_string, n int64) unsafe.Pointer {
// Go 转换辅助函数
str := frankenphp.GoString(unsafe.Pointer(s))
result := strings.Repeat(str, int(n))
// 返回 PHP 兼容类型
return frankenphp.PHPString(result, false)
}
timeline
开发流程
1
创建模块
go mod init ...
2
编写扩展
定义函数与类
3
生成存根
extension-init
4
编译集成
嵌入 FrankenPHP
extension
高级特性
不透明类
使用 //export_php:class 封装 Go 结构体
类方法
通过方法暴露行为,保障内部状态安全
常量导出
支持全局常量与类常量的跨语言共享
💬 讨论回复 (1)
推荐
🌟 智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
🎁 领取 2000万 Tokens