Heim >Backend-Entwicklung >PHP-Problem >So lesen und schreiben Sie protobuf3 in PHP
protobuf (Google Protocol Buffers) ist eine von Google bereitgestellte Toolbibliothek für effiziente Protokolldatenaustauschformate (ähnlich wie Json). Im Vergleich zu Json weist Protobuf jedoch eine höhere Konvertierungseffizienz sowie eine höhere Zeiteffizienz und Platzeffizienz auf als JSON 3- bis 5-mal.
In Proto3 können Sie den Befehl protoc direkt verwenden, um PHP-Code zu generieren. Der generierte PHP-Code kann nicht direkt verwendet werden und erfordert die Unterstützung der Protobuf-PHP-Bibliothek.
Im Folgenden wird anhand eines Beispiels gezeigt, wie Protobuf in PHP verwendet wird. Definieren Sie zunächst die Proto-Datei:
syntax = "proto3"; package lm; message helloworld { int32 id = 1; // ID string str = 2; // str int32 opt = 3; // optional field }
Beachten Sie, dass hier die Syntax von Proto3 verwendet wird, die sich von Proto2 unterscheidet. Die Einschränkungen von erforderlich und optional sind nicht mehr verfügbar und alle Felder sind optional. Was ist der Unterschied zwischen Proto3 und Proto2? Sie können sich auf diesen Artikel beziehen.
Dann verwenden Sie protoc, um die PHP-Datei zu generieren:
protoc --php_out=./ hello.proto
Sie werden sehen, dass eine hello.pb.php-Datei generiert wird:
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 { .... }
Lesen Sie den darin enthaltenen Code und stellen Sie fest, dass er die Klasse unter GoogleProtobuf verwendet. Dies ist eine PHP-Bibliothek, Sie können sie herunterladen:
https://github.com/google/protobuf/tree/master/php/src/Google/Protobuf
Sie können sie auch mit Composer in das Projekt einführen. Es wird empfohlen, Composer zu verwenden, da Composer automatisch einen Autoloader für Sie generiert:
composer require google/protobuf
Nach der Einführung von Google/Protobuf mithilfe von Composer wird im Projekt ein Anbieterverzeichnis angezeigt. In Ihrem eigenen Code können Sie Binärdateien lesen und schreiben, indem Sie autoload.php unter includevendor und die gerade generierte Datei helloworld.pb.php einbinden.
Mit Hilfe der Google/Protobuf-Bibliothek ist es für PHP sehr praktisch, Binärdateien im Protobuf-Format zu lesen und zu schreiben.
Verwenden Sie protobuf, um Daten in eine Binärdatei zu schreiben:
<?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);
Lesen Sie dieselbe Binärdatei:
<?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;
Empfohlenes Lernen: php-Video-Tutorial
Das obige ist der detaillierte Inhalt vonSo lesen und schreiben Sie protobuf3 in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!