概要
这里是一篇操作教程,记录下来方便后续复习。
在 PHP 中使用 protobuf(v3) 进行序列化和反序列化,从安装到使用需要进行哪些步骤,注意哪些问题。

操作环境

Centos7.8
php7.4

安装
在 github 上搜索 google/protobuf,找到官方源库文档,找到对应的 PHP 文档,按照官方文档去进行操作。

文档中安装涉及了两个部分,一个是安装 protobuf 的 C 扩展,另一个是依赖包 google/protobuf。

C 扩展的安装使用 pecl 命令(需要使用 find / -name pecl 查找,安装的路径并没有在环境变量中),除此之外还依赖其他的命令需要先行安装,C 扩展下载安装的路径不符合预期(我的 php 使用 remi-php 的库安装,路径和原始镜像的默认设置不同),之后需要对 protobuf.so 建立软链接;之后使用 composer 安装依赖包即可。

接下来还需要代码生成器 protoc,[proto 的安装],解析定义文件 *.proto 并生成对应 php 代码,在项目中使用,需要引入对应的代码才可以,需要变更 composer.json 文件增加 autoload 配置,如果是测试,也可以手动 require。

使用
使用主要分为两点,一个是序列化,另一个是反序列化。

$pb=new Demo();
$pb->setName('demo');

//序列化,数据不可看
$string=$pb->serializeToString();

//序列化,数据可看
$string=$pb->serializeToJsonString();

//反序列化
$pb=new Demo();
//从db中获取到的序列化值,反序列化赋值给$pb,然后就可以正常使用
$pb->mergeFromString($string);
$pb->mergeFromJsonString($string);

$pb->getName();//输出demo

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。