第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Laravel 7 中,如何將已注冊的服務(wù)單例傳遞到另一個已注冊服務(wù)的構(gòu)造函數(shù)中?

在 Laravel 7 中,如何將已注冊的服務(wù)單例傳遞到另一個已注冊服務(wù)的構(gòu)造函數(shù)中?

PHP
守著星空守著你 2023-09-15 10:16:15
最近在學(xué)習(xí)AppServiceProvider。我已經(jīng)在 AppServiceProvider 中注冊了一個服務(wù),它創(chuàng)建了一個單例 - 一個實例化的 GuzzleHttp 客戶端,如下所示:$this->app->singleton('GuzzleHttp\Client', function($api) {    return new Client([        'base_uri' =>  env('ELASTICSEARCH_HOST'),        'auth' => [            env('ELASTICSEARCH_USER'),             env('ELASTICSEARCH_PASS')        ],    ]);});這是連接到 ElasticSearch API,目前有效:$response = app('GuzzleHttp\Client')->request('GET');我設(shè)置了一個名為 ElasticSearchFacade 的外觀,其中僅包含getFacadeAccessor():protected static function getFacadeAccessor(){    return 'elasticSearch';}我還在elasticSearch我的 AppServiceProvider 中注冊,如下所示:$this->app->bind('elasticSearch', function() {    return new ElasticSearch();});這將創(chuàng)建一個新的 ElasticSearch 實例。但是,我很樂意將其傳遞GuzzleHttp\Client到 elasticSearch 服務(wù)中。所以我嘗試將以下內(nèi)容添加到我的 ElasticSearch.php 文件中:use GuzzleHttp\Client;class ElasticSearch{    protected $client;    public function __contruct(Client $client)    {        $this->client = $client;    }    public function handle()    {        $response = $this->client->request('GET');        die($response->getBody()->getContents());    }}我現(xiàn)在已將注冊的服務(wù)更改為通過 GuzzleHttp 客戶端,如下所示:$this->app->bind('elasticSearch', function() {    return new ElasticSearch(app('GuzzleHttp\Client'));});但是我收到錯誤:PHP 錯誤:在 null 上調(diào)用成員函數(shù) request()
查看完整描述

1 回答

?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗 獲得超4個贊

構(gòu)造方法__construct不是__contruct。您還沒有為您的ElasticSearch類定義自定義構(gòu)造函數(shù)。所以該成員變量是null.


附注:不要env在配置文件之外調(diào)用。


env為了避免在配置文件之外進(jìn)行這些調(diào)用,您可以根據(jù)需要添加配置文件或添加到當(dāng)前配置文件。像 Elastic Search 憑證這樣的東西可能會被添加到services.php配置文件中:


<?php


return [

    ...


    'elasticsearch' => [

        'host' => env('ELASTICSEARCH_HOST'),

        'user' => env('ELASTICSEARCH_USER'),

        'password' => env('ELASTICSEARCH_PASS'),

    ],


    ...

];

現(xiàn)在您已經(jīng)在配置中包含了這些值,您可以使用配置系統(tǒng)來提取這些值:


config('services.elasticsearch'); // that whole array of values

config('services.elasticsearch.host'); // just that host value


Config::get('services.elasticsearch');

app('config')->get(...);

有多種方法可以訪問配置系統(tǒng)。


查看完整回答
反對 回復(fù) 2023-09-15
  • 1 回答
  • 0 關(guān)注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號