moolex/protobuf-php

PHP的proto库

v3.5.0 2017-12-18 03:41 UTC

This package is auto-updated.

Last update: 2024-09-17 20:29:34 UTC


README

此目录包含通过纯PHP包和本地C扩展两种方式实现的Protocol Buffers运行时实现。纯PHP包旨在为更广泛的PHP平台提供可用性,而C扩展旨在提供更高的性能。这两种实现提供相同的运行时API和共享相同的生成代码。当用户想要稍后切换实现时,无需为相同的proto定义重新生成代码。

这两种实现都使用了生成的PHP代码,这些代码在PHP中定义了消息和枚举类型。我们强烈建议使用protoc的PHP生成支持来处理.proto文件。此目录中的构建过程仅安装扩展/包;您还需要安装protoc才能拥有PHP代码生成功能。

要求

要使用PHP运行时库需要

  • C扩展:PHP 5.5.x或5.6.x。
  • PHP包:PHP 5.5、5.6或7。

安装

C扩展

先决条件

要安装c扩展,需要以下工具

  • autoconf
  • automake
  • libtool
  • make
  • gcc
  • pear
  • pecl

在Ubuntu上,您可以使用以下命令安装它们

sudo apt-get install php-pear php5-dev autoconf automake libtool make gcc

在其他平台上,请在继续之前使用相应的包管理工具安装它们。

从源代码安装(构建扩展)

要构建c扩展,请运行以下命令

cd ext/google/protobuf
pear package
sudo pecl install protobuf-{VERSION}.tgz

从PECL安装

当我们发布Protocol Buffers的版本时,我们将扩展上传到PECL。要使用此预打包扩展,只需像安装任何其他扩展一样安装它即可

sudo pecl install protobuf-{VERSION}

PHP包

从composer安装

只需将"google/protobuf"添加到您的项目中composer.json的'require'部分。

Protoc

扩展或包安装完成后,如果您希望从.proto文件生成PHP代码,您还需要安装Protocol Buffers编译器(protoc),具体说明请参阅此存储库的main README文件。最新发布中包含的protoc版本支持--php_out选项以生成PHP代码

protoc --php_out=out_dir test.proto

使用方法

对于生成的代码:https://developers.google.com/protocol-buffers/docs/reference/php-generated

已知问题

  • 缺少对已知类型的本地支持。
  • 缺少对proto2的支持。
  • 没有提供清除/复制消息的API。
  • 没有提供通过流进行编码/解码的API。
  • 如果存在循环引用,则map字段可能无法进行垃圾回收。
  • C扩展中没有提供消息的调试信息。
  • 未测试HHVM。
  • C扩展在Windows、Mac、PHP 7.0上未测试。
  • 消息名称不能为空。