FrankenPHP 扩展开发指南
func repeat_this(s *C.zend_string, n int64) unsafe.Pointer {
文本版 · 供搜索与朗读
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 结构体
类方法
通过方法暴露行为,保障内部状态安全
常量导出
支持全局常量与类常量的跨语言共享
GoLang
PHP 8.2+
Worker Mode
auto_awesome
frankenphp.dev