codeigniterライブラリでApache Thriftを使いたいです。
私は以下のコードを持っています。私はファイルをチェックして、それらが存在します。
PHPのバージョンはPHP 5.6.31
リサイクルverionは0.10.*
codeigniterでapache thriftを使用すると、クラスが見つかりません。
use Thrift\Transport\TSocket;
use Thrift\Transport\TBufferedTransport;
use Thrift\Transport\THttpClient;
use Thrift\Protocol\TBinaryProtocol;
use Thrift\Exception\TException;
use Thrift\ClassLoader\ThriftClassLoader;
use \test\MyServiceClient;
class Cds2thriftclass extends Rootclass {
private $_thrift_uri = "";
private $_thrift_port = "";
private $_timeout = 5000;
private $transport;
private $protocol;
private $client;
public function __construct() {
parent::__construct();
$this->_thrift_uri = 127.0.0.1;
$this->_thrift_port = 8899;
$THRIFT_ROOT = APPPATH . 'libraries/thrift10';
require_once $THRIFT_ROOT.'/Thrift/ClassLoader/ThriftClassLoader.php';
$GEN_DIR = $THRIFT_ROOT . '/Thrift/packages';
$loader = new ThriftClassLoader();
$loader->registerNamespace('Thrift', $THRIFT_ROOT);
$loader->registerDefinition('test', $GEN_DIR);
$loader->register();
$this->transport = new TSocket($this->_thrift_uri, $this->_thrift_port);
$this->transport->setRecvTimeout($this->_timeout);
$this->transport = new TBufferedTransport($this->transport, 1024, 512);
$this->protocol = new TBinaryProtocol($this->transport);
$this->client = new \test\MyServiceClient($this->protocol);
です、それは私にエラーを示しています。このことについてちょうどこの link、
Class 'test\MyServiceClient' not found in /apps/blog/application/libraries/mythriftclass.php
を、私はGoogleとSTでこの問題を検索しますが、それは私の問題を解決しません。
私が間違ったことを教えてください。
ありがとうございました。
は今、問題は単にファイルをロードするためにPHP require
FUNCを使用し、解決しています。
しかし、とにかく長年の助けてくれてありがとう。
コードは打撃です:あなたが名前空間を使用する場合
$THRIFT_ROOT = APPPATH . 'libraries/thrift10';
require_once $THRIFT_ROOT.'/Thrift/ClassLoader/ThriftClassLoader.php';
$GEN_DIR = $THRIFT_ROOT . '/Thrift/packages';
$loader = new ThriftClassLoader();
$loader->registerNamespace('Thrift', $THRIFT_ROOT);
$loader->registerDefinition('test', $GEN_DIR);
$loader->register();
$this->transport = new TSocket('127.0.0.1', 8899);
$this->transport->setRecvTimeout($this->_timeout);
$this->transport = new TBufferedTransport($this->transport, 1024, 512);
$this->protocol = new TBinaryProtocol($this->transport);
require_once $THRIFT_ROOT . '/Thrift/gen-php/test/Types.php';
require_once $THRIFT_ROOT . '/Thrift/gen-php/test/Cds2APIService.php';
$this->client = new MyServiceClient($this->protocol);
を導入する方法は、それは言うことです、Iリサイクルのために作曲家を使わなければなりませんか?プロジェクトでは作曲家を使用していませんが、他の方法がありますか? –
Ciは名前空間でサポートされていません。あなたが作曲家を使いたくなく、Ciを使いたいなら、名前空間を使わないでください。名前空間を使用したい場合は、laravel – long
を使用することをお勧めします.CIは名前空間でサポートされていません。PHPのバージョンが5.3より高い場合、名前空間ですべてサポートされていると思います。 –