>백엔드 개발 >PHP 문제 >PHP에서 protobuf3을 읽고 쓰는 방법

PHP에서 protobuf3을 읽고 쓰는 방법

醉折花枝作酒筹
醉折花枝作酒筹앞으로
2021-07-22 16:05:232692검색

protobuf(Google Protocol Buffers)는 Google에서 제공하는 효율적인 프로토콜 데이터 교환 형식 도구 라이브러리(Json과 유사)이지만 Json에 비해 Protobuf는 변환 효율성, 시간 효율성 및 공간 효율성이 모두 JSON의 3~5배 더 높습니다.

PHP에서 protobuf3을 읽고 쓰는 방법

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
{
    ....
}

내부 코드를 읽고 GoogleProtobuf 아래 클래스를 사용하는 것을 확인하세요. 이것은 PHP 라이브러리입니다. 다운로드할 수 있습니다.

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

작곡가를 사용하여 프로젝트에 도입할 수도 있습니다. Composer가 자동으로 Autoloader를 생성하므로 Composer를 사용하는 것이 좋습니다.

composer require google/protobuf

composer를 사용하여 google/protobuf를 도입하면 공급업체 디렉터리가 프로젝트에 나타납니다. 자신의 코드에서 includevendor 아래에 autoload.php와 방금 생성된 helloworld.pb.php 파일을 포함시켜 바이너리를 읽고 쓸 수 있습니다.

간단한 읽기 및 쓰기 예제

google/protobuf 라이브러리의 도움으로 PHP가 protobuf 형식의 바이너리를 읽고 쓰는 것이 매우 편리합니다.

protobuf를 사용하여 바이너리 파일에 데이터 쓰기:

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

동일한 바이너리 파일 읽기:

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

권장 학습: php 비디오 튜토리얼

위 내용은 PHP에서 protobuf3을 읽고 쓰는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제