ProtoBuf數(shù)據(jù)格式怎么在PHP環(huán)境中使用-創(chuàng)新互聯(lián)

ProtoBuf數(shù)據(jù)格式怎么在PHP環(huán)境中使用?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

堅守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價值觀,專業(yè)網(wǎng)站建設服務10余年為成都成都廣告設計小微創(chuàng)業(yè)公司專業(yè)提供成都定制網(wǎng)站營銷網(wǎng)站建設商城網(wǎng)站建設手機網(wǎng)站建設小程序網(wǎng)站建設網(wǎng)站改版,從內(nèi)容策劃、視覺設計、底層架構、網(wǎng)頁布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設服務。

一、定義一個消息類型


創(chuàng)建一個關于Person的定義文件(以.proto為后綴),如示例為person.proto,文件內(nèi)容如下:

syntax="proto3";
package test;
message Person{
 string name=1;//姓名
 int32 age=2;//年齡
 bool sex=3;//性別
}

1、syntax="proto3":表明使用的是proto3格式,如果不指定則為proto2


2、package test:定義包名為test,生成類時,會產(chǎn)生一個目錄為test


3、message Person:消息主體內(nèi)容,里面為各個字段的定義

二、生成對應的PHP類


定義好Person的格式后,該格式如果不生成我們所需要的類庫,其實是無任何意義的,還google提供一個工具protoc生成我們要的類庫。

1、安裝protoc


安裝地址:protobuf-php-3.5.1.tar.gz,目前新為3.5.1


官方發(fā)布地址:https://github.com/google/protobuf/releases/tag/v3.5.1


解壓并安裝:

tar -zxvf protobuf-php-3.5.1.tar.gz
cd protobuf-3.5.1
./configure --prefix=/opt/soft/protobuf
make
make install

2、生成類庫

/opt/soft/protobuf/bin/protoc --php_out=./ person.proto


生成后將在當前目錄產(chǎn)生如下文件:


GPBMetadata/Person.php


Test/Person.php

三、在PHP中使用ProtoBuf


在PHP中使用ProtoBuf依賴一個protobuf的擴展,目前提供兩種方式進行使用,1:php的c擴展,2:php的lib擴展包,這兩者均可在剛才下載包里可以找到。


另外,也可以使用composer進行安裝該依賴擴展:composer require google/protobuf


這里我主要是使用composer安裝,應該它可以幫我產(chǎn)生autoload


安裝好依賴后,我們就可以開始在php環(huán)境下使用protobuf了


1、序列化

<?php
include 'vendor/autoload.php';
include 'GPBMetadata/Person.php';
include 'Test/Person.php';

$person = new Test\Person();
$person->setName("lailaiji");
$person->setAge("28");
$person->setSex(true);
$data = $person->serializeToString();
file_put_contents('data.bin',$data);


2、反序列化

<?php
include 'vendor/autoload.php';
include 'GPBMetadata/Person.php';
include 'Test/Person.php';
$bindata = file_get_contents('./data.bin');
$person = new Test\Person();
$person->mergeFromString($bindata);
echo $person->getName();

可以正常地輸出lailaiji

PHP常用的使用方法:


序列化:


1、serializeToString:序列化成二進制字符串


2、serializeToJsonString:序列化成JSON字符串


反序列化:


1、mergeFromString:二進制字符串反序列化


2、mergeFromJsonString:Json字符串反序列化

.proto的message解析


1、定義:


類型 變量名=位置;


如:int32 age=1;


這里需要區(qū)分,變量名后面的數(shù)字意義為該變量內(nèi)容在二進制序列中的位置而不是變量的值,該數(shù)字必須是不可重復使用。


2、目前支持的類型:


double,float,int32,int64,uint32 ,uint64,sint32,sint64


fixed32,fixed64,sfixed32,sfixed64,bool,bytes

1、序列號+反序列號時間:


image.png

2、存儲大小:


image.pn

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設公司,的支持。

當前題目:ProtoBuf數(shù)據(jù)格式怎么在PHP環(huán)境中使用-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://muchs.cn/article32/eispc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計、建站公司、關鍵詞優(yōu)化網(wǎng)頁設計公司、網(wǎng)站建設品牌網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管