PHP - 即使包含它,也找不到类'HbaseClient'

时间:2013-03-11 15:06:15

标签: php hbase thrift thrift-protocol

在这个问题上我已经摸不着头脑了。我刚开始使用PHP / Thrift与HBase进行通信(我可以用Python做得很好)。由于某种原因,下面的代码生成了$ client = new line上找不到的类'HbaseClient':

$GLOBALS['THRIFT_ROOT'] = 'thrift';
require_once( $GLOBALS['THRIFT_ROOT'] . '/Thrift.php' );
require_once( $GLOBALS['THRIFT_ROOT'] . '/transport/TSocket.php' );
require_once( $GLOBALS['THRIFT_ROOT'] . '/transport/TBufferedTransport.php' );
require_once( $GLOBALS['THRIFT_ROOT'] . '/protocol/TBinaryProtocol.php' );
require_once( $GLOBALS['THRIFT_ROOT'] . '/Hbase/Hbase.php' );

try
{
    $socket = new TSocket('127.0.0.1', 9090);
    $transport = new TBufferedTransport($socket, 1024, 1024);
    $protocol = new TBinaryProtocolAccelerated($transport);
    $client = new HbaseClient( $protocol );
    $transport->open();
}
catch (Exception $e)
{
    echo "Exception: %e\r\n";
}

我真的不知道为什么。在Hbase.php包含文件中,客户端定义如下:

class HbaseClient implements \Hbase\HbaseIf {

我在这里错过了一些简单明了的东西吗? (这里有完整的HBase.php:http://pastebin.com/6kd9r2Se

提前致谢!

2 个答案:

答案 0 :(得分:2)

我认为这是命名空间问题。试试看:

namespace Hbase;
实例化对象的文件中的

使用完全限定名称:

$client = new Hbase\HbaseClient( $protocol );

答案 1 :(得分:0)

您确定已将HBase文件夹放在THRIFT_ROOT目录下或外面吗?