Maison  >  Article  >  développement back-end  >  Comment lire et écrire protobuf3 en PHP

Comment lire et écrire protobuf3 en PHP

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-07-22 16:05:232581parcourir

protobuf (Google Protocol Buffers) est une bibliothèque d'outils de format d'échange de données de protocole efficace fournie par Google (similaire à Json), mais par rapport à Json, Protobuf a une efficacité de conversion plus élevée, l'efficacité temporelle et l'efficacité spatiale sont toutes deux 3 à 5 fois JSON.

Comment lire et écrire protobuf3 en PHP

Dans proto3, vous pouvez directement utiliser la commande protoc pour générer du code PHP. Le code PHP généré ne peut pas être utilisé directement et nécessite le support de la bibliothèque PHP Protobuf.

Ce qui suit utilise un exemple pour montrer comment utiliser protobuf en PHP. Définissez d'abord le fichier proto :

syntax = "proto3";
package lm;

message helloworld
{
    int32 id = 1; // ID
    string str = 2; // str
    int32 opt = 3; // optional field
}

Notez que la syntaxe de proto3 est utilisée ici, qui est différente de celle de proto2. Les restrictions obligatoires et facultatives ne sont plus disponibles et tous les champs sont facultatifs. Quelle est la différence entre proto3 et proto2 ? Vous pouvez vous référer à cet article.

Ensuite, utilisez protoc pour générer le fichier PHP :

protoc --php_out=./ hello.proto

Vous verrez qu'un fichier hello.pb.php est généré :

Générer le code 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
{
    ....
}

Lisez le code à l'intérieur et constatez qu'il utilise la classe sous GoogleProtobuf, c'est une bibliothèque PHP, vous pouvez la télécharger :

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

Vous pouvez également utiliser composer pour l'introduire dans le projet. Il est recommandé d'utiliser composer car Composer générera automatiquement un autoloader pour vous :

composer require google/protobuf

Après avoir introduit google/protobuf à l'aide de composer, un répertoire de fournisseurs apparaîtra dans le projet. Dans votre propre code, vous pouvez lire et écrire du binaire en incluant autoload.php sous includevendor et le fichier helloworld.pb.php qui vient d'être généré.

Exemple simple de lecture et d'écriture

Avec l'aide de la bibliothèque google/protobuf, il est très pratique pour PHP de lire et d'écrire des binaires au format protobuf.

Utilisez protobuf pour écrire des données dans un fichier binaire :

<?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);

Lisez le même fichier binaire :

<?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;

Apprentissage recommandé : Tutoriel vidéo php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer