概要
這裡是一篇操作教程,記錄下來方便後續複習。
在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
擴充套件
不同版本的protobuf
並不相容,如果涉及到版本轉換,可以參考部落格[php中使用protobuf]PHP文件PHP文件
本作品採用《CC 協議》,轉載必須註明作者和本文連結