tars-extension说明文档
简介
tars-extension是一个用c实现的高性能tars打包解包和tup编码解码的php扩展,是整个phptars的基础依赖。
使用说明
与其他php扩展一样,进入扩展目录执行:
phpize
./configure
make
make test
make install修改php.ini文件加载.so文件
通过php -m命令查看扩展是否安装成功。
扩展说明
tars-extension 扩展主要做了三件事情:
将tars的所有数据结构进行了扩展类型的映射
将tars的三种复杂类型进行了特殊的扩展类型的映射
提供了tup和tars协议的打包解包与编码解码的能力。
基本类型的映射
如下是我们对基本类型的映射:
当我们需要标识具体的变量类型的时候,就需要用到这些基本的类型了,这些类型都是常量,从1-14。
复杂类型的映射
针对vector、map、struct三种基本的类型,有一些特殊的打包解包的机制,因此需要引入特别的数据类型: vector:
map:
struct:
打包解包与编码解码
作为扩展的核心功能,就是提供tars的编解码和打包解包的能力:
打包解包
编码解码
对于不同类型的结构的打包解包的更丰富的使用请参考 tests/
tars2php(自动生成php类工具)使用说明
请参见tars2php模块下的说明文档: 详细说明
测试用例
phpunit
针对扩展的常见使用,增加了测试用例,位于/ext/testcases文件夹下, 测试时只需要执行php phpunit-4.8.36.phar test.php 即可完成所有测试用例的执行。其中覆盖到了:
所有基本类型的打包解包和编码的测试
简单struct类型打包解包和编码的测试
简单vector类型的打包解包和编码的测试
简单map类型的打包解包和编码的测试
复杂vector类型(包含非基本数据类型)的打包解包和编码的测试
复杂map类型(包含非基本数据类型)的打包解包和编码的测试
复杂struct类型(嵌套vector和map)的打包解包和编码的测试
另外testTARSClient.php和testTARSServer.php是tars协议(iVersion=1)情况下客户端发包,服务端解包 和 服务端回包,客户端解包的测试用例。
注意,需要自行下载phpunit的可执行文件,或直接使用预先安装好的phpunit工具,进行单元测试。
phpt
安装完成扩展后,执行make test即可。
Last updated