PHP使用私有函数中另一个类的名称空间
所以我使用了更具体的Elasticsearch,它可以通过composer获得。这是5.0版本。我试图在类中的私有函数中构建客户机连接。基本上我想要的是一个带有2个私有函数的类。第一个专用函数将使用以下命令创建客户端连接:PHP使用私有函数中另一个类的名称空间,php,oop,
elasticsearch,namespaces,Php,Oop,
elasticsearch,Namespaces,所以我使用了更具体的Elasticsearch,它可以通过composer获得。这是5.0版本。我试图在类中的私有函数中构建客户机连接。基本上我想要的是一个带有2个私有函数的类。第一个专用函数将使用以下命令创建客户端连接: $hosts = ['host' => 'http://censored']; $clientBuilder = ClientBuilder::create(); $clientBuilder->setHosts($hosts); $clientBuilder-&
$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($type)和query($query),这将传递给第二个私有函数。第二个私有函数将启动对Elasticsearch的API请求,并将结果返回给公共函数,然后公共函数将结果回显给用户
我相信这是可能的,但我不知道如何在私有函数中调用或使用另一个名称空间。将其放入私有函数并预先自动加载Elasticsearch会导致找不到ClientBuilder
提前感谢您,很抱歉发了这么长的帖子。无论您在哪里称呼它,用法都是一样的 例如,文件foo.php:
namespace Foo\Bar;
function Baz() { echo 'Baz()...'; }
class Qux
{
public function PublicMethod() {
echo 'PublicMethod()...';
}
public static function StaticMethod() {
echo 'StaticMethod()...';
}
}
如果您位于同一命名空间中,则可以使用非限定名称,或者使用命名空间:
namespace Foo\Bar;
include 'foo.php';
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();
全局平均值上的反斜杠\
include 'foo.php';
\Foo\Bar\Baz();
\Foo\Bar\Qux::StaticMethod();
$qux = new \Foo\Bar\Qux();
$qux->PublicMethod();