protobuf (Google Protocol Buffers) は、Google が提供する効率的なプロトコル データ交換フォーマット ツール ライブラリです (Json と同様) が、Protobuf は Json と比較して変換効率が高く、時間効率とスペース効率はいずれも JSON の 3 ~ 5 倍です。
proto3 では、protoc コマンドを直接使用して PHP コードを生成できます。生成された PHP コードは直接使用できず、Protobuf PHP ライブラリのサポートが必要です。
以下では、例を使用して、PHP で protobuf を使用する方法を示します。まず、proto ファイルを定義します:
syntax = "proto3"; package lm; message helloworld { int32 id = 1; // ID string str = 2; // str int32 opt = 3; // optional field }
ここでは、proto2 とは異なる proto3 の構文が使用されていることに注意してください。必須およびオプションの制限はなくなり、すべてのフィールドがオプションになります。 proto3 と proto2 の違いは何ですか? この記事を参照してください。
次に、protoc を使用して PHP ファイルを生成します:
protoc --php_out=./ hello.proto
hello.pb.php ファイルが生成されることがわかります:
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 { .... }
Read 中のコードをダウンロードすると、Google\Protobuf の下のクラスが使用されていることがわかります。これは PHP ライブラリです。ダウンロードできます:
https://github.com/google/protobuf/tree/master /php/ src/Google/Protobuf
は、composer を使用してプロジェクトに導入することもできます。composer が自動的に Autoloader を生成するため、composer を使用することをお勧めします:
composer require google/protobuf
Google/ を導入した後コンポーザーを使用して protobuf を実行すると、プロジェクトにベンダー ディレクトリが表示されます。独自のコードでは、includevendor の下に autoload.php と生成された helloworld.pb.php ファイルを含めることで、バイナリの読み取りと書き込みを行うことができます。
簡単な読み取りと書き込みの例
google/protobuf ライブラリの助けを借りて、PHP が protobuf 形式でバイナリを読み書きするのは非常に便利です。
protobuf を使用してバイナリ ファイルにデータを書き込む:
<?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);
同じバイナリ ファイルを読み取る:
<?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;
推奨される学習: php ビデオ チュートリアル
以上がPHP で protobuf3 を読み書きする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、酸とベースのデータベースモデルを比較し、その特性と適切なユースケースを詳述しています。酸は、財務およびeコマースアプリケーションに適したデータの整合性と一貫性を優先し、ベースは可用性に焦点を当て、

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。

記事では、組み込み関数、ホワイトリストアプローチ、サーバー側の検証などの手法に焦点を当てたセキュリティを強化するためのPHP入力検証のベストプラクティスについて説明します。

この記事では、Token BucketやLeaky BucketなどのアルゴリズムやSymfony/Rate-Limiterなどのライブラリを使用するなど、PHPでAPIレート制限を実装するための戦略について説明します。また、監視、動的に調整されたレートの制限、および手をカバーします

この記事では、パスワードを保護するためにPHPでpassword_hashとpassword_verifyを使用することの利点について説明します。主な議論は、これらの関数が自動塩の生成、強力なハッシュアルゴリズム、およびSecurを通じてパスワード保護を強化するということです

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

この記事では、PHPでのXSS攻撃を防ぐための戦略について説明し、入力の消毒、出力エンコード、セキュリティを向上させるライブラリとフレームワークの使用に焦点を当てています。

この記事では、PHPでのインターフェイスと抽象クラスの使用について説明し、それぞれをいつ使用するかに焦点を当てています。インターフェイスは、無関係なクラスや複数の継承に適した、実装なしで契約を定義します。抽象クラスは共通の機能を提供します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
