本篇将会讲解PHP中处理Protocol Buffers数据的相关问题。
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。
安装protoc编译器
下载安装
1 2 3 4 5 6 | $ wget https:
$ tar zxvf protobuf-2.5.0.tar.gz
$ cd protobuf-2.5.0
$ ./configure --prefix=/usr/local/protobuf
$ sudo make
$ sudo make install
|
Salin selepas log masuk
安装验证:
1 2 | $ /usr/local/protobuf/bin/protoc --version
libprotoc 2.5.0
|
Salin selepas log masuk
php扩展
安装php扩展
1 2 3 4 5 6 7 | $ wget https:
$ tar zxvf protocolbuffers-0.2.6.tgz
$ cd protocolbuffers-0.2.6
$ phpize
$ ./configure
$ sudo make
$ sudo make install
|
Salin selepas log masuk
php.ini配置文件中添加 : extension = "protocolbuffers.so"
$ php -m | grep protocolbuffers
protocolbuffers
protoc插件
1 | $ mkdir ~/code/app$ cd ~/code/app$ composer require protocolbuffers/protoc-gen-php
|
Salin selepas log masuk
测试:
编写proto文件
1 2 3 4 5 6 7 8 9 10 11 12 | $ vim demo.proto
syntax = "proto2" ;
package Proto.Demo;
message OrderInfo {
required string name = 1 ;
required int32 age = 2;
required string amount = 3;
}
message UserInfo {
required int32 uid = 1;
required string address = 2;
}
|
Salin selepas log masuk
生成php类库代码
$ /usr/local/protobuf/bin/protoc --plugin=vendor/bin/protoc-gen-php --php_out=. -I. demo.proto
编写测试文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $ vim demo.proto.php<?phpspl_autoload_register( function ( $name ){ static $classmap ; if (! $classmap ) {
$classmap = array ( 'Proto\Demo\OrderInfo' => '/Proto/Demo/OrderInfo.php', 'Proto\Demo\UserInfo' => '/Proto/Demo/UserInfo.php',
);
} if (isset( $classmap [ $name ])) { require __DIR__ . DIRECTORY_SEPARATOR . $classmap [ $name ];
}
});
call_user_func( function (){
$registry = \ProtocolBuffers\ExtensionRegistry::getInstance();
$oi = new Proto\Demo\OrderInfo();
$oi ->setName('Jack');
$oi ->setAge(28);
$oi ->setAmount('500');
var_dump( "压缩数据:" );
var_dump( $protoData );
var_dump( "获取数据:" );
var_dump( $obj ->getName());
var_dump( $obj ->getAge());
var_dump( $obj ->getAmount());
|
Salin selepas log masuk
测试
1 2 3 | $ php demo.proto.php
string(15) "压缩数据:" string(13) "
Jack500 "string(15) " 获取数据: "string(4) " Jack "string(2) " 28 "string(3) " 500"
|
Salin selepas log masuk
本篇讲解了PHP中处理Protocol Buffers数据的相关内容,更多相关知识请关注php中文网。
相关推荐:
关于PHP快递查询类
php通过curl发送XML数据,并获取XML数据
PHP完美生成word文档,可加入html元素
Atas ialah kandungan terperinci PHP中处理Protocol Buffers数据. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!