2017-06-03 3 views
0

私はより具体的には、作曲家を通じて利用可能なElasticsearchを使用しています。それは5.0バージョンです。私はクラス内のプライベート関数内でクライアント接続を構築しようとしています。基本的に私は2つのプライベート関数を持つ1クラスです。 $ searchparamsと$クライアントは、下記の第2のプライベート関数でアクセスできるようにする必要があることPHPプライベート関数内の別のクラスの名前空間を使用する

$hosts = ['host' => 'http://censored']; 
$clientBuilder = ClientBuilder::create(); 
$clientBuilder->setHosts($hosts); 
$clientBuilder->setSerializer('\Elasticsearch\Serializers\EverythingToJSONSerializer'); 
$client = $clientBuilder->build(); 
$searchParams = ['index' => 'main']; 

マインドをあなたは:最初のプライベート関数を使用してクライアント接続を作成します。

第2のプライベート関数はパブリック関数からタイプとクエリで取ると、APIリクエストが

概要をElasticsearchするために開始するために$クライアントと$ searchparamを使用します:パブリック関数は、別のファイルから呼び出されます。これを使用するには、型($ type)とquery($ query)を渡す必要があります。これは2番目のプライベート関数に渡されます。 2番目のプライベート関数は、ElasticsearchへのAPI要求を開始し、結果をpublic関数に返します。public関数は、結果をユーザーに返します。

私はこれが可能だと信じていますが、プライベート関数内で別の名前空間を呼び出す方法や使用する方法がわかりません。これをプライベート関数に入れ、Elasticsearchをあらかじめオートロードすると、ClientBuilderが見つからないという結果になります。

ありがとうございました。例えば、ファイルfoo.phpため

答えて

0

あなたはそれを呼び出すところ、それは問題ではありません、使用はまったく同じです...

namespace Foo\Bar; 

function Baz() { echo 'Baz()...'; } 

class Qux 
{ 
    public function   PublicMethod() { 
     echo 'PublicMethod()...'; 
    } 
    public static function StaticMethod() { 
     echo 'StaticMethod()...'; 
    } 

} 

あなたがいる場合は、非修飾名を使用することができます同じ名前空間またはuse名前空間に:

namespace Foo\Bar; 
include 'foo.php'; 

Baz(); 

Qux::StaticMethod(); 

$qux = new Qux(); 
$qux->PublicMethod(); 

または

namespace MyNamespace; 
include 'foo.php'; 

use function Foo\Bar\Baz; 
use Foo\Bar\Qux; 

Baz(); 

Qux::StaticMethod(); 

$qux = new Qux(); 
$qux->PublicMethod(); 

または修飾名

namespace MyNamespace; 
include 'foo.php'; 

use Foo\Bar; 

Bar\Baz(); 

Bar\Qux::StaticMethod(); 

$qux = new Bar\Qux(); 
$qux->PublicMethod(); 

または完全修飾名

include 'foo.php'; 

\Foo\Bar\Baz(); 

\Foo\Bar\Qux::StaticMethod(); 

$qux = new \Foo\Bar\Qux(); 
$qux->PublicMethod(); 

バックスラッシュ\ begginingのグローバル

を意味します
関連する問題