bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

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

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

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

一、定義一個(gè)消息類(lèi)型


創(chuàng)建一個(gè)關(guān)于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,生成類(lèi)時(shí),會(huì)產(chǎn)生一個(gè)目錄為test


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

二、生成對(duì)應(yīng)的PHP類(lèi)


定義好Person的格式后,該格式如果不生成我們所需要的類(lèi)庫(kù),其實(shí)是無(wú)任何意義的,還google提供一個(gè)工具protoc生成我們要的類(lèi)庫(kù)。

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、生成類(lèi)庫(kù)

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


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


GPBMetadata/Person.php


Test/Person.php

三、在PHP中使用ProtoBuf


在PHP中使用ProtoBuf依賴(lài)一個(gè)protobuf的擴(kuò)展,目前提供兩種方式進(jìn)行使用,1:php的c擴(kuò)展,2:php的lib擴(kuò)展包,這兩者均可在剛才下載包里可以找到。


另外,也可以使用composer進(jìn)行安裝該依賴(lài)擴(kuò)展:composer require google/protobuf


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


安裝好依賴(lài)后,我們就可以開(kāi)始在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:序列化成二進(jìn)制字符串


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


反序列化:


1、mergeFromString:二進(jìn)制字符串反序列化


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

.proto的message解析


1、定義:


類(lèi)型 變量名=位置;


如:int32 age=1;


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


2、目前支持的類(lèi)型:


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


fixed32,fixed64,sfixed32,sfixed64,bool,bytes

1、序列號(hào)+反序列號(hào)時(shí)間:


image.png

2、存儲(chǔ)大小:


image.pn

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

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

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

廣告

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

綿陽(yáng)服務(wù)器托管