gtt / thrift-generator
基于PHP类签名的生成.thrift文件
0.3.0
2014-12-26 10:26 UTC
Requires
- php: >=5.3.3
- zendframework/zend-code: ~2.3
- zendframework/zend-server: ~2.3
Requires (Dev)
- apache/thrift: 1.0.x-dev
- mikey179/vfsstream: ~1.0
- phpunit/phpunit: ~3.7
- symfony/process: ~2.3
This package is auto-updated.
Last update: 2024-09-09 13:58:38 UTC
README
根据PHP类签名生成apache thrift定义文件。
目的是什么?
Apache Thrift的主要概念是实现跨语言服务开发,使其能够相互交互。为了使用Thrift框架远程调用代码,您首先需要提供所有目标类的定义,这些定义在特殊的thrift文件中,然后生成服务Thrift代码。但假设您已经有一些服务器类,并且想要使用Thrift为它们提供RPC API。在这种情况下,手动填充服务器类的thrift文件似乎很繁琐。ThriftGenerator使用类反射和doc-blocks来检查类签名,并自动为您生成相应的thrift文件。然后使用这些thrift文件生成thrift服务代码,这些代码可以在服务器端使用原始的Thrift编译器生成。
要求
ThriftGenerator与PHP类一起工作,需要PHP 5.3或更高版本,并可以提供适用于Thrift编译器0.9.2及更高版本的Thrift定义文件。
安装
ThriftGenerator可以使用composer轻松安装
composer require gtt/thrift-generator 0.1.0
您还可以将ThriftGenerator用作独立的库
git clone https://github.com/GlobalTradingTechnologies/ThriftGenerator && cd ThriftGenerator
composer install --prefer-dist
用法
ThriftGenerator具有方便的OOP接口
use Gtt\ThriftGenerator\Generator\ThriftGenerator; $generator = new ThriftGenerator(); $generator // set classes that should be introspected in order to generate thrift definition files ->setClasses( array( new ReflectionClass("\Your\Class\Name"), new ReflectionClass("\Another\Class\Name") ) ) // set output dir ->setOutputDir("<path to folder that will contain generated thrift definitions>") // generate! ->generate();
限制
由于ThriftGenerator仅使用Reflection功能静态检查PHP类签名,因此无法检测并定义在thrift IDL中使用的任何类(在大多数情况下,这些类在类doc-blocks中未描述为输入参数、返回值或可以抛出的异常)。
路线图
有一些尚未实现的功能将非常受欢迎
- 在doc blocks中支持相对复杂的数据类型/异常名称(不是FQCN)。
- 支持Thrift服务继承。
- 在生成的thrift文件中包含注释。
- 自定义doc-blocks实现以支持一些无法从PHP方法签名或doc blocks反射的Thrift相关选项(容器类型广泛支持、单向调用、枚举等)。
- 支持Thrift版本。