moolex / protobuf-php
PHP的proto库
Requires
- php: >=5.5.0
Requires (Dev)
- phpunit/phpunit: >=4.8.0
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上未测试。
- 消息名称不能为空。