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寫入資料到二進位檔案:
<?php include '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);
讀取同樣的二進位檔案:
<?php include '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影片教學
以上是PHP如何讀寫protobuf3的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1
強大的PHP整合開發環境