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