所以我正在使用更具体的Elasticsearch,它可以通过作曲家获得。这是5.0版本。我正在尝试在类中的私有函数内构建客户端连接。基本上我想要的是1个带2个私有函数的类。第一个私有函数将使用:
创建客户端连接$hosts = ['host' => 'http://censored'];
$clientBuilder = ClientBuilder::create();
$clientBuilder->setHosts($hosts);
$clientBuilder->setSerializer('\Elasticsearch\Serializers\EverythingToJSONSerializer');
$client = $clientBuilder->build();
$searchParams = ['index' => 'main'];
请注意,$ searchparams和$ client必须可以通过下面提到的第二个私有函数访问。
第二个私有函数将从公共函数中获取类型和查询,并使用$ client和$ searchparam向Elasticsearch发起API请求
摘要:将从另一个文件调用公共函数。要使用它,需要传递一个类型($ type)和查询($ query),它将被传递给第二个私有函数。第二个私有函数将向Elasticsearch发起一个API请求,并将结果返回给公共函数,然后公共函数将结果回显给用户。
我相信这是可能的,但我不知道如何在私有函数中调用或使用其他命名空间。将它放入私有函数并预先自动加载Elasticsearch会导致找不到ClientBuilder。
提前感谢您,并为这篇长篇文章感到抱歉。
答案 0 :(得分: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();
或完全限定名称
include 'foo.php';
\Foo\Bar\Baz();
\Foo\Bar\Qux::StaticMethod();
$qux = new \Foo\Bar\Qux();
$qux->PublicMethod();
在开始均值全局
上反斜杠\