亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

基于用戶輸入的中間件上的 Laravel/Lumen 綁定接口

基于用戶輸入的中間件上的 Laravel/Lumen 綁定接口

PHP
幕布斯6054654 2024-01-19 20:49:59
我對此很陌生,所以請跟我說。:)我有兩個接口的實現,我們只是命名它們BankService1,并且BankService2它們都遵循DisbursementInterface.通常,如果我只需要一種實現,我只需將接口和實現綁定起來bootstrap/app.php,并將接口注入到控制器的構造函數中。但是,我想根據用戶輸入動態綁定實現,如下所示://if remittance is true, use bank 1 else bank 2$disbursementService = ($request['remittance'] ? 'BankService1' : 'BankService2');$this->app->bind('My\Namespace\DisbursementInterface', "My\Namespace\\{$disbursementService}");我認為中間件是執行此操作的最佳位置,因為我需要該$request對象。然而,我很難綁定實現,因為就像我所說的,我對此仍然很陌生。有什么建議么?
查看完整描述

1 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

我想到了。我真正需要的只是創建一個服務容器!我實際上根本不需要它在中間件中。


class DisbursementServiceProvider extends ServiceProvider

{

    

    public function register()

    {

        $this->app->singleton(DisbursementInterface::class, function($app) {

            if ($this->app->request->remittance) {

                return new BankService1();

            }


            return new BankService2();

        });

    }

}

之后,我注冊了我的服務容器bootstrap/app.php,現在它可以工作了!我現在可以根據用戶輸入在實現之間切換:)


查看完整回答
反對 回復 2024-01-19
  • 1 回答
  • 0 關注
  • 119 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號