Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lumen Container.php正在尝试构建它不支持的类';不必_Php_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Lumen - Fatal编程技术网 elasticsearch,lumen,Php,elasticsearch,Lumen" /> elasticsearch,lumen,Php,elasticsearch,Lumen" />

Lumen Container.php正在尝试构建它不支持的类';不必

Lumen Container.php正在尝试构建它不支持的类';不必,php,elasticsearch,lumen,Php,elasticsearch,Lumen,我目前正在使用Lumen来构建API,同时也在玩弹性搜索。我与一家服务提供商建立了一个名为GeocodeService的服务,该服务提供商目前正在构建弹性搜索客户端,并将其注入GeocodeService。这些类的代码如下所示 GeocodeService.php <?php namespace App\Services; use App\Models\ElasticSearch\Geocode; use Elasticsearch\Client; class GeocodeServi

我目前正在使用Lumen来构建API,同时也在玩弹性搜索。我与一家服务提供商建立了一个名为GeocodeService的服务,该服务提供商目前正在构建弹性搜索客户端,并将其注入GeocodeService。这些类的代码如下所示

GeocodeService.php

<?php
namespace App\Services;

use App\Models\ElasticSearch\Geocode;
use Elasticsearch\Client;

class GeocodeService
{
    protected $client;

    public function __construct(
        Client $client
    )
    {
        $this->client = $client;
    }
}
如果我在GeocodeService类的构造函数的第一行调用dd($client),那么我将获得客户机对象的输出,并且没有错误

所以我的问题是,有人知道这个问题的根源吗?如果我能做些什么来防止它

如果你需要任何进一步的信息,请告诉我


提前感谢您的回复

您可以将
Elasticsearch\Client
的实现绑定到容器中。类似于(在您的服务提供商中):

使用
Container::make
方法:

$geocodeService = app(App\Services\GeocodeService::class);

// or
$geocodeService = app()->make(App\Services\Geocode::class);

// or via Facade
// make sure you have uncommented '$app->withFacades()' in
// bootstrap/app.php file
$geocodeService = App::make(App\Services\Geocode::class);

嘿,我也遇到了这个问题:我的代码像$this->app->bind('\ElasticSearch\Client',function($app){returnnew\ElasticSearch\Client();});在我的控制器中输入的客户端。。它试图获得内部传输类。。你知道为什么吗?你试过使用
Elasticsearch\ClientBuilder::create()->build()
而不是
new\Elasticsearch\Client()
?嗨,克莉桑,谢谢你的快速回复。。我解决了这个问题。。第一件事。。必须按照你说的那样使用建筑商。。第二期我写的是ElasticSearch而不是ElasticSearch所有地方。。坏类型:(…我花了3小时才弄明白.)。。
BindingResolutionException in Container.php line 824:
Unresolvable dependency resolving [Parameter #0 [ <required> $retries ]] in class Elasticsearch\Transport
in Container.php line 824
at Container->resolveNonClass(object(ReflectionParameter)) in Container.php line 799
at Container->getDependencies(array(object(ReflectionParameter), object(ReflectionParameter), object(ReflectionParameter), object(ReflectionParameter)), array()) in Container.php line 772
at Container->build('Elasticsearch\Transport', array()) in Container.php line 627
at Container->make('Elasticsearch\Transport', array()) in Application.php line 447
at Application->make('Elasticsearch\Transport') in Container.php line 838
<?php

namespace App\Providers;

use Elasticsearch\Client;
use Elasticsearch\ClientBuilder;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind(Client::class, function () {
            return ClientBuilder::create()->build();
        });
    }
}
$geocodeService = new App\Services\GeocodeService(
    Elasticsearch\ClientBuilder::create()->build()
);
$geocodeService = app(App\Services\GeocodeService::class);

// or
$geocodeService = app()->make(App\Services\Geocode::class);

// or via Facade
// make sure you have uncommented '$app->withFacades()' in
// bootstrap/app.php file
$geocodeService = App::make(App\Services\Geocode::class);