schivei / php-go
php-go 允许从 PHP 中调用 Go 代码,最小化代码模板。
1.0.0
2024-02-27 00:12 UTC
Requires
- php: >=8.0
This package is auto-updated.
Last update: 2024-09-28 01:58:11 UTC
README
php-go 允许从 PHP 中调用 Go 代码,最小化代码模板。
目标
- 允许从 Go 导出函数和常量到 PHP
- 可靠且始终安全
- 部署 Go 代码无需重新构建 PHP 扩展
进行中
- 支持 GoLang Http 请求
安装
您可以使用 "go install" 下载此包。然后您可以运行
go install github.com/schivei/php-go
注意
- 您需要在您的机器上安装 GoLang。
- php-go 还需要安装 PHP 开发头文件。
- php-go 需要 CGO 启用。
完成此操作后,请转到您的项目目录并运行
php-go
您还可以将二进制目录作为参数传递
php-go /path/to/bin
扩展将在此目录下构建并放置。
然后,将生成的 phpgo.so
复制到您的 PHP 扩展目录,并将 extension=phpgo.so
添加到您的 php.ini。
或者,您也可以从 bin
目录使用 phpgo.so
。
注意:php-go 支持 PHP 8+(非-ZTS)。
此外,您还可以使用 php composer 安装此包
composer require schivei/php-go
它将安装包,并将扩展放置在 vendor/schivei/php-go
目录中。
使用方法
导出 Go 函数
package main import ( "strings" "github.com/schivei/php-go/php" ) // call php.Export() for its side effects var _ = php.Export("example", map[string]interface{}{ "toUpper": strings.ToUpper, "takeOverTheWorld": TakeOverTheWorld, }) func TakeOverTheWorld() { } func main() { }
然后可以使用 -buildmode c-shared
将模块编译为共享库
go build -o example.so -buildmode c-shared .
注意:Go 需要 模块在此模式下为 main 包,并且有一个 main 函数。
在 PHP 中使用模块
// Create a class from the Go module, and return an instance of it $module = phpgo_load("/path/to/example.so", "example"); // Call some method $module->toUpper("foo");