1

我正在编写一个通过 Thrift 进行通信的应用程序。我正在使用 Thrift 0.9.0(通过 OSX 上的自制软件安装)。我有一个可以工作的 Java 服务器和客户端,但我正在努力编写一个 PHP 服务器,因为没有生成 *Processor 类。

Thrift 的 PHP 文档基本上不存在,但我希望生成 *Processor 类,因为:

  • Thrift 教程中的当前 (21c0a850) PhpServer.php引用了一个 CalculatorProcessor 类。
  • 为教程生成 Java 代码会生成一个 Calculator.Processor 类

但是,当我从 tutorial.thrift 文件 ( ) 生成 PHP 代码thrift -r --gen php:namespace tutorial.thrift时,生成的 Calculator.php 不包含 CalculatorProcessor 类。

我错过了什么吗?

4

2 回答 2

3

写这个问题的过程促使我找到了答案!

我正在生成php:namespace,但这是使用 Thrift 0.8.0 的保留。事实上,“命名空间”在 0.8 中并不存在(大概是因为命名空间总是添加到 0.9 中生成的 PHP 中)。thrift --helpdo list的输出php:server,它“生成 PHP 服务器存根”。显然,这意味着生成 PHP *Processor 类。

于 2013-08-25T15:44:15.897 回答
1

我有一个与您定义的非常相似的应用程序(Java Server with PHP Client)。

我有以下节俭定义文件:

namespace java com.blogspot.symfonyworld.wealthylaughingduck.thrift.generated
namespace php SymfonyWorld.WealthyLaughingDuck

# definitions below

我运行以下命令来重新生成节俭类:

thrift -r --gen java -out src/main/java src/submodules/commons/thrift/service.thrift
thrift -r --gen php:oop,namespace,autoload -out src/main/php/packages src/submodules/commons/thrift/service.thrift

它就像一个魅力 :) 看看我的github 应用程序- 它开箱即用(您可以在单击界面时观看 Java log4j 输出)。

于 2013-08-25T18:20:05.997 回答