2017-06-03 16 views
0

所以我使用的是更具體的Elasticsearch,它可以通過作曲者使用。它是5.0版本。我試圖在一個類中的私有函數內部建立客戶端連接。基本上我想要的是具有2個私有函數的1個類。第一個專用功能會使用創建客戶端連接:PHP使用私有函數內的另一個類的命名空間

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

心靈您$ searchparams和$客戶端必須是由下面的提到的第二私有函數訪問。

第二私有函數將採取從公共職能類型和查詢,並使用$客戶端和$ searchparam發起API請求Elasticsearch

摘要:公共職能將從另一個文件被調用。要使用它,它需要傳遞一個類型($ type)和查詢($ query),並將其傳遞給第二個私有函數。第二個私有函數將向Elasticsearch發起API請求,並將結果返回給公共函數,然後公共函數將結果回送給用戶。

我相信這是可能的,但我不知道如何調用或使用私人函數中的另一個名稱空間。將它放入私有函數並自動加載Elasticsearch會導致ClientBuilder無法找到。

預先感謝您,並對長期發帖感到抱歉。

回答

0

這不要緊,你怎麼稱呼它,使用的是完全相同的...

例如文件foo.php:

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(); 

完全合格的名稱上beggining

include 'foo.php'; 

\Foo\Bar\Baz(); 

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

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

反斜槓\意味着全球

相關問題