魏长东

weichangdong

东邪

php安装protobuff和运用

git clone https://github.com/allegro/php-protobuf/ ,把文件下载下来。

然后mv或者cp到/usr/local/php/include/php/ext/目录(安装php扩展的目录)下

cd进去,pwd

/usr/local/php/include/php/ext/php-protobuf

phpize 
./configure 
make && make install 

然后

php -m|grep pro

protobuf   //有这个扩展

然后开始实际应用 

我在/home/protoc目录下建立了一个proto后缀名的文本文件。

[root@swordman protoc]# cat wcd.proto
message PhoneNumber { 
    required string number = 1; 
    required int32 type = 2; 
  } 
message Person { 
  required string name = 1; 
  required int32 id = 2; 
  optional string email = 3; 
  repeated PhoneNumber phone = 4; 
} 
message AddressBook { 
  repeated Person person = 1; 
} 

然后执行

php /usr/local/php/include/php/ext/php-protobuf/protoc-php.php wcd.proto

然后ls就有一个pb_proto_wcd.php文件生成

部分内容是

<?php
/**
 * Auto generated from wcd.proto at 2015-04-14 18:55:41
 */

/**
 * PhoneNumber message
 */
class PhoneNumber extends \ProtobufMessage
{
    /* Field index constants */
    const NUMBER = 1;
    const TYPE = 2;

    /* @var array Field descriptors */
    protected static $fields = array(
        self::NUMBER => array(
            'name' => 'number',
            'required' => true,
            'type' => 7,
        ),
        self::TYPE => array(
            'name' => 'type',
            'required' => true,
            'type' => 5,
        ),
    );

感觉很神奇,就这么几行的proto文件。生成了400多行的php文件。