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.
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é :
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é.
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 '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);
Lisez le même fichier binaire :
<?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;
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!