schivei/php-go

php-go 允许从 PHP 中调用 Go 代码,最小化代码模板。

维护者

详细信息

github.com/schivei/php-go

源代码

安装: 6

依赖者: 0

建议者: 0

安全: 0

星标: 2

关注者: 1

分支: 20

语言:C

1.0.0 2024-02-27 00:12 UTC

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");