让你的php框架支持protobuf

 一.protoc 工具生成
1.1 安装依赖扩展
[详细教程]

1.2 使用protoc工具生成对应的php类
由于protobuf扩展封装在框架的extend目录下面,路径: /casualgame/extend/socket/protobuf
以生成一个person类为例:

step1:创建person的protobuf定义文件:persongpb.proto

step2:
生成Person类
切换到/casualgame/extend/socket/protobuf目录
执行命令:
> protoc –php_out=./ persongpb.proto

说明:
第一个参数
php_out表示生成php类
–php_out=./ 表示把php类生成在当前目录下
第二个参数
persongpb.proto表示使用persongpb.proto定义文件

这样会在/casualgame/extend/socket/protobuf目录下创建
Extend/Socket/Protobuf/Person这几个新目录,并且我们想要的Person类在该目录下面。
把Peroson/Person.php复制到/casualgame/extend/socket/protobuf目录下即可。

step3:
通过composer注册psr4命名空间
第一步:配置composer.json

红色部分为新加的命名空间,跟Person.php中的命名空间一致。执行composer install
会在/casualgame/vendor/composer/autoload_psr4.php文件下生成命名空间配置:

框架在自动加载的时候根据命名空间别名帮我们加载到我们想加载的文件。
> PS:如果对composer使用不熟的要好好复习一下。

示例(php向goserver请求获取用户信息)
1)定义格式文件
server.proto

PS:对protobuf语法不熟悉的研究一下。[传送门](https://colobu.com/2015/01/07/Protobuf-language-guide/ “传送门”)

具体用法test.php

2)整合到框架中
执行以下命令:
> php /data/wwwroot/php-protobuf-0.12.4/protoc-gen-php.php server.proto

同样在/casualgame/extend/socket/protobuf/Extend/Socket/Protobuf/Server文件夹下会生成

PhpBroad2Client.php PhpFieldData.php PhpPlayer.php三个文件。把整个Server目录拷贝到

/casualgame/extend/socket/protobuf/ 目录下,使用的时候引入三个工具类的命名空间。
使用:

PS:如果提示找不到相关class的话,只需要去composer.json psr4选项注册对应的命名空间。

发表评论

电子邮件地址不会被公开。 必填项已用*标注