Heim >Backend-Entwicklung >PHP-Problem >So lesen und schreiben Sie protobuf3 in PHP

So lesen und schreiben Sie protobuf3 in PHP

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-07-22 16:05:232693Durchsuche

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.

So lesen und schreiben Sie protobuf3 in PHP

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:

PHP-Code generieren

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.

Einfaches Lese- und Schreibbeispiel

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 &#39;vendor/autoload.php&#39;;
include &#39;hello.pb.php&#39;;

$from = new \Lm\helloworld();
$from->setId(1);
$from->setStr(&#39;foo bar, this is a message&#39;);
$from->setOpt(29);

$data = $from->serializeToString();
file_put_contents(&#39;data.bin&#39;, $data);

Lesen Sie dieselbe Binärdatei:

<?php
include &#39;vendor/autoload.php&#39;;
include &#39;hello.pb.php&#39;;

$data = file_get_contents(&#39;data.bin&#39;);
$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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen