이 문서에서는 PHP에서 프로토콜 버퍼 데이터 처리와 관련된 문제를 설명합니다.
프로토콜 버퍼는 구조화된 데이터 직렬화에 사용할 수 있는 가볍고 효율적인 구조화된 데이터 저장 형식이며 데이터 저장 또는 RPC 데이터 교환 형식에 매우 적합합니다. 통신 프로토콜, 데이터 저장 및 기타 분야에서 언어 독립적, 플랫폼 독립적, 확장 가능한 직렬 구조화된 데이터 형식으로 사용할 수 있습니다. 현재 C++, Java, Python 세 가지 언어로 API가 제공됩니다.
protoc 컴파일러 설치
다운로드 및 설치
$ wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz $ tar zxvf protobuf-2.5.0.tar.gz $ cd protobuf-2.5.0 $ ./configure --prefix=/usr/local/protobuf $ sudo make $ sudo make install
설치 확인:
$ /usr/local/protobuf/bin/protoc --version libprotoc 2.5.0
php 확장
php 확장 설치
$ wget https://pecl.php.net/get/protocolbuffers-0.2.6.tgz $ tar zxvf protocolbuffers-0.2.6.tgz $ cd protocolbuffers-0.2.6 $ phpize $ ./configure $ sudo make $ sudo make install
php.ini 구성 파일에 추가: Extension = "protocolbuffers.so"
$ php -m | grep 프로토콜 버퍼
protocolbuffers
protoc 플러그인
$ mkdir ~/code/app$ cd ~/code/app$ composer require protocolbuffers/protoc-gen-php
테스트:
프로토 파일 쓰기
$ vim demo.proto syntax = "proto2"; package Proto.Demo; message OrderInfo { required string name = 1 ; required int32 age = 2; required string amount = 3; } message UserInfo { required int32 uid = 1; required string address = 2; }
PHP 클래스 라이브러리 코드 생성
$ /usr/local/protobuf/bin/protoc --plugin= Vendor/bin/protoc -gen-php --php_out=.demo.proto
테스트 파일 작성:
$ vim demo.proto.php<?phpspl_autoload_register(function($name){ static $classmap; if (!$classmap) { $classmap = array( 'Proto\Demo\OrderInfo' => '/Proto/Demo/OrderInfo.php', 'Proto\Demo\UserInfo' => '/Proto/Demo/UserInfo.php', // @@protoc_insertion_point(autoloader_scope:classmap) ); } if (isset($classmap[$name])) { require __DIR__ . DIRECTORY_SEPARATOR . $classmap[$name]; } }); call_user_func(function(){ $registry = \ProtocolBuffers\ExtensionRegistry::getInstance(); // @@protoc_insertion_point(extension_scope:registry)}); $oi = new Proto\Demo\OrderInfo(); $oi->setName('Jack'); $oi->setAge(28); $oi->setAmount('500');//压缩数据$protoData = $oi->serializeToString(); var_dump("压缩数据:"); var_dump($protoData);//获取到$age的值$obj = Proto\Demo\OrderInfo::parseFromString($protoData); var_dump("获取数据:"); var_dump($obj->getName()); var_dump($obj->getAge()); var_dump($obj->getAmount());
Test
$ php demo.proto.php string(15) "压缩数据:"string(13) " Jack500"string(15) "获取数据:"string(4) "Jack"string(2) "28"string(3) "500"
이 문서에서는 PHP에서 프로토콜 버퍼 데이터 처리와 관련된 내용을 설명합니다. 관련 지식이 있으신 경우 PHP 중국어 웹사이트를 참고하시기 바랍니다.
관련 권장 사항:
php는 컬을 통해 XML 데이터를 보내고 XML 데이터를 가져옵니다.
PHP는 단어 문서를 완벽하게 생성하고 html 요소를 추가할 수 있습니다.
위 내용은 PHP에서 프로토콜 버퍼 데이터 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!