1

Thrift で通信するアプリケーションを作成しています。Thrift 0.9.0 を使用しています (OSX に自作でインストール)。Java サーバーとクライアントは動作していますが、*Processor クラスが生成されていないため、PHP サーバーを作成するのに苦労しています。

Thrift の PHP ドキュメントは本質的に存在しませんが、次の理由により *Processor クラスが生成されることを期待しています。

  • Thrift チュートリアルの現在の (21c0a850) PhpServer.php は、CalculatorProcessor クラスを参照しています。
  • チュートリアル用の Java コードを生成すると、Calculator.Processor クラスが生成されます。

しかし、 tutorial.thrift ファイル ( thrift -r --gen php:namespace tutorial.thrift) から PHP コードを生成すると、結果の Calculator.php には CalculatorProcessor クラスが含まれていません。

何か不足していますか?

4

2 に答える 2

3

この質問を書く過程で、私は答えを見つけるようになりました!

を生成php:namespaceしていましたが、それは Thrift 0.8.0 を使用したことによる持ち越しでした。実際、'namespace' は 0.8 には存在しません (おそらく、0.9 で生成された PHP に名前空間が常に追加されるためです)。thrift --helpdo listの出力はphp:server、「PHP サーバー スタブを生成します」。これは明らかに、PHP *Processor クラスを生成することを意味します。

于 2013-08-25T15:44:15.897 に答える
1

あなたが定義したものと非常によく似たアプリケーションがあります(PHPクライアントを備えたJavaサーバー)。

私は次のthrift定義ファイルを持っています:

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

# definitions below

次のコマンドを実行して、thrift クラスを再生成します。

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

And it works like a charm :) Take a look at my github application - it works out of the box (you may watch Java log4j output as you click in the interface).

于 2013-08-25T18:20:05.997 に答える