我正在嘗試編寫用C編寫的Thrift服務器的PHP客戶端。我正在按照http://chanian.com/2010/05/13/thrift-tutorial-a-php-client/給出的教程。PHP:解析不同文件/名稱空間中的類型
我對PHP很陌生,我懷疑是缺少一些語言基礎知識。
有問題的代碼是:
<?php
// Setup the path to the thrift library folder
$GLOBALS['THRIFT_ROOT'] = 'Thrift';
// Load up all the thrift stuff
require_once $GLOBALS['THRIFT_ROOT'].'/Thrift.php';
require_once $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TSocket.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TBufferedTransport.php';
// Load the package that we autogenerated for this tutorial
require_once $GLOBALS['THRIFT_ROOT'].'/packages/encabulationgame/EncabulationGame.php';
// Several things might go wrong
try {
// Create a thrift connection (Boiler plate)
$socket = new TSocket('localhost', '65123'); <--error is here
我 「上線22級 'TSocket' 在/var/www/foo/scores.php找不到」 收到錯誤
TSocket是在Thrift/transport/TSocket.php中定義。節儉/運輸/ TSocket.php文件(刪除評論)讀取:
<?php
namespace Thrift\Transport;
use Thrift\Transport\TTransport;
use Thrift\Exception\TException;
use Thrift\Exception\TTransportException;
use Thrift\Factory\TStringFuncFactory;
/**
* Sockets implementation of the TTransport interface.
*
* @package thrift.transport
*/
class TSocket extends TTransport {
如果我我的代碼更改爲:
$socket = new Thrift\Transport\TSocket('localhost', '65123');
然後我的代碼(當然,這條線,至少)無再拋出一個錯誤。我很好奇:本教程的作者做了什麼以使此代碼在他的系統上工作,我沒有在我的系統上執行這些代碼?
其次,我試圖通過添加一行來解決這個問題:
use Thrift\Transport;
我的文件之前,我創建$插座,但我預料它沒有解決不了的問題。
我該如何說服PHP解決在另一個文件中定義的這種類型? (我必須解析幾個文件中的幾種類型。)
嘿,看看我的github上的java-server/php-client thrift應用程序:https://github.com/tkoomzaaskz/wealthy-laughing-duck。您可能會看到名稱空間PHP如何使用名稱空間與節儉服務器進行通信:https://github.com/tkoomzaaskz/wealthy-laughing-duck/tree/master/src/main/php – ducin 2013-04-22 12:22:36