gtt/thrift-generator

基于PHP类签名的生成.thrift文件

0.3.0 2014-12-26 10:26 UTC

This package is auto-updated.

Last update: 2024-09-09 13:58:38 UTC


README

根据PHP类签名生成apache thrift定义文件。

Build Status Scrutinizer Code Quality Code Coverage Latest Stable Version Latest Unstable Version License

目的是什么?

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中未描述为输入参数、返回值或可以抛出的异常)。

路线图

有一些尚未实现的功能将非常受欢迎

  1. 在doc blocks中支持相对复杂的数据类型/异常名称(不是FQCN)。
  2. 支持Thrift服务继承。
  3. 在生成的thrift文件中包含注释。
  4. 自定义doc-blocks实现以支持一些无法从PHP方法签名或doc blocks反射的Thrift相关选项(容器类型广泛支持、单向调用、枚举等)。
  5. 支持Thrift版本。