iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP怎么读写protobuf3
  • 294
分享到

PHP怎么读写protobuf3

2023-06-20 16:06:24 294人浏览 泡泡鱼
摘要

这篇文章主要介绍“PHP怎么读写protobuf3”,在日常操作中,相信很多人在php怎么读写protobuf3问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP怎么读写protobuf3”的疑惑有所帮助!

这篇文章主要介绍“PHP怎么读写protobuf3”,在日常操作中,相信很多人在php怎么读写protobuf3问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP怎么读写protobuf3”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

protobuf(Google Protocol Buffers)是Google提供一个具有高效的协议数据交换格式工具库(类似JSON),但相比于json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍。

在proto3中,可以直接使用protoc命令生成PHP代码。生成的PHP代码不能直接使用,还需要Protobuf的PHP库支持。

下面通过一个例子演示下PHP怎么使用protobuf。首先定义proto文件:

syntax = "proto3";package lm;message helloworld{    int32 id = 1; // ID    string str = 2; // str    int32 opt = 3; // optional field}

注意这里采用的是proto3的语法,和proto2不太一样,required和optional的限定已经没有了,所有的字段都是可选的。proto3相比proto2有什么区别,可以参照 这篇文章。

接着用protoc生成PHP文件:

protoc --php_out=./ hello.proto

会看到生成了一个hello.pb.php文件:

生成PHP代码

namespace Lm;use Google\Protobuf\Internal\DescriptorPool;use Google\Protobuf\Internal\GPBType;use Google\Protobuf\Internal\RepeatedField;use Google\Protobuf\Internal\GPBUtil;class helloworld extends \Google\Protobuf\Internal\Message{    ....}

阅读下里面的代码,发现它use了Google\Protobuf下的类,这是一个PHP库,可以去下载:

https://GitHub.com/google/protobuf/tree/master/php/src/Google/Protobuf

也可以用composer引入到项目中,推荐用composer引入,因为composer会帮你自动生成Autoloader:

composer require google/protobuf

采用composer方式引入google/protobuf之后,项目中会出现一个vendor目录。在自己的代码中includevendor下的autoload.php,以及刚才生成的helloworld.pb.php文件,就可以进行二进制的读写了。

简单读写示例

有了google/protobuf库的帮助,PHP读写protobuf格式的二进制还是很方便的。

利用protobuf写入数据到二进制文件:

<?phpinclude 'vendor/autoload.php';include 'hello.pb.php';$from = new \Lm\helloworld();$from->setId(1);$from->setStr('foo bar, this is a message');$from->setOpt(29);$data = $from->serializeToString();file_put_contents('data.bin', $data);

读取同样的二进制文件:

<?phpinclude 'vendor/autoload.php';include 'hello.pb.php';$data = file_get_contents('data.bin');$to = new \Lm\helloworld();$to->mergeFromString($data);echo $to->getId() . PHP_EOL;echo $to->getStr() . PHP_EOL;echo $to->getOpt() . PHP_EOL;

到此,关于“PHP怎么读写protobuf3”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: PHP怎么读写protobuf3

本文链接: https://www.lsjlt.com/news/298612.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP怎么读写protobuf3
    这篇文章主要介绍“PHP怎么读写protobuf3”,在日常操作中,相信很多人在PHP怎么读写protobuf3问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP怎么读写protobuf3”的疑惑有所帮助!...
    99+
    2023-06-20
  • php怎么读写raw格式文件
    PHP是一门庞大且灵活的编程语言,常常用于Web开发。当我们需要处理二进制数据或者非常规的数据格式时,PHP提供了不少方法来满足我们的需求。而在其中,设置raw格式文件是一个比较常见的需求,因此在此我将简单介绍如何实现。在PHP中,我们通常...
    99+
    2023-05-14
    php文件目录 php
  • Java文件的简单读写、随机读写、NIO读写与怎么使用MappedByteBuffer读写
    这篇文章主要介绍“Java文件的简单读写、随机读写、NIO读写与怎么使用MappedByteBuffer读写”,在日常操作中,相信很多人在Java文件的简单读写、随机读写、NIO读写与怎么使用MappedByteBuffer读写问题上存在疑...
    99+
    2023-06-15
  • C#怎么读写Binary
    这篇文章主要讲解了“C#怎么读写Binary”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么读写Binary”吧!关于Binary方式Binary和文本方式的区别,主要是在一些特殊字符...
    99+
    2023-06-17
  • Android怎么读写Excel
    这篇文章主要介绍“Android怎么读写Excel”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android怎么读写Excel”文章能帮助大家解决问题。Excelapache 为 java开发者们...
    99+
    2023-07-05
  • 浅析php+mysql怎么实现读写分离
    MySQL作为目前最流行的数据库之一,在应用中大量被使用。在高并发和数据量较大的情况下,由于MySQL的读写并发性能不足,为了提高MySQL的并发性能,读写分离成为了必要的方案。读写分离的原理是将读操作和写操作分别放在不同的MySQL实例上...
    99+
    2023-05-14
    读写分离 php mysql
  • php读写excel文件
    1.引入包 有不少提供读写excel文件的包,这里选择比较常用的一个,加到自己的项目里就好了。 "phpoffice/phpspreadsheet": "1.8.2", 2.读取文件 ...
    99+
    2023-08-31
    excel php读写excel php excel php xls php xlsx
  • php中怎么实现Mysql读写分离操作
    php中怎么实现Mysql读写分离操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。连接案例:<php require...
    99+
    2022-10-18
  • python snap7怎么读写PLC
    这篇文章主要介绍“python snap7怎么读写PLC”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python snap7怎么读写PLC”文章能帮助大家解决问题。主要在DB块...
    99+
    2023-07-05
  • 怎么用 C++ 读写文件
    这篇文章主要讲解了“怎么用 C++ 读写文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用 C++ 读写文件”吧!在 C++ 中,对文件的读写可以通过使用输入输出流与流运算符 ...
    99+
    2023-06-15
  • Python怎么读写JSON文件
    本篇内容介绍了“Python怎么读写JSON文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JSONJSON 起源JSON 全称 Java...
    99+
    2023-06-30
  • Android怎么读写CSV文件
    小编给大家分享一下Android怎么读写CSV文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言Android读写CSV文件的相关内容,CSV也就是Comma...
    99+
    2023-05-30
    android csv文件
  • 怎么用 Bash 读写文件
    本篇内容介绍了“怎么用 Bash 读写文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!学习 Bash 读取和写入数据的不同方式,以及何时使...
    99+
    2023-06-15
  • Python中怎么读写文件
    Python中怎么读写文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。从文件读取和写入文件是任何编程语言的常见需求。任何文件在读写之前都需要打开。大多数编程语...
    99+
    2023-06-15
  • Java怎么读写XML文件
    本篇内容介绍了“Java怎么读写XML文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!import java.util.*;import ...
    99+
    2023-06-03
  • mongodb怎么做读写分离
    在MongoDB中实现读写分离可以通过复制集来实现。复制集是一组运行在不同服务器上的MongoDB进程,其中有一个主节点(Prima...
    99+
    2023-09-04
    mongodb
  • Node.js怎么使用流实现读写同步边读边写功能
    本篇内容主要讲解“Node.js怎么使用流实现读写同步边读边写功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node.js怎么使用流实现读写同步边读边写功能”吧!具体代码如下所示://10个...
    99+
    2023-06-17
  • VB.NET怎么读写文本文件
    这篇文章主要介绍VB.NET怎么读写文本文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!为了把text保存到文件,创建一个基于FileStream的StreamReader对象,然后调用Write方法把需要保存的t...
    99+
    2023-06-17
  • Golang中怎么读写Channel数据
    本文小编为大家详细介绍“Golang中怎么读写Channel数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“Golang中怎么读写Channel数据”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Channel...
    99+
    2023-07-04
  • python文件读写怎么实现
    这篇文章主要介绍了python文件读写怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python文件读写怎么实现文章都会有所收获,下面我们一起来看看吧。读文件打开一个文件用open()方法(open()...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作