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

So lesen und schreiben Sie protobuf3 in PHP

醉折花枝作酒筹
Freigeben: 2023-03-11 18:40:02
nach vorne
2672 Leute haben es durchsucht

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
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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
{
    ....
}
Nach dem Login kopieren

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 dem Login kopieren

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);
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Verwandte Etiketten:
php
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage