簡體   English   中英

Laravel運行時條件綁定

[英]Laravel conditional binding at runtime

我遇到的情況是,我有兩個用於交易電子郵件的不同電子郵件提供商(因為其中一個不可靠)。 要知道我正在使用哪個提供程序,我有一個DB標志,用於控制要使用哪個提供程序。 我還想對接口進行編碼,這樣就不必重復太多代碼。

Laravel是否可以在返回電子郵件接口的綁定之前使用服務提供程序來檢查數據庫中的提供程序設置? 如果沒有,是否可以將接口綁定到控制器中的實現?

謝謝!

您應該能夠擁有一個服務提供者,該服務提供者通過一個模型從數據庫中獲取一個值,然后根據某些條件,選擇從另一個郵件發送者開始。

//Your loaded emailProvider
private $emailProvider = null;

public function boot()
{
    $this->emailProvider->boot();
}


public function register()
{
    $user = User::find(3);
    //Split email in [0] someusername and [1] somedomain
    $emailArray = explode('@',$user->email);
    $domain = $emailArray[1];
    switch($domain)
    {
        case 'someProvider.com':
            $this->emailProvider = new SomeProviderEmailServiceProvider(app());
        break;
        default:
            $this->emailProvider = new DefaultEmailServiceProvider(app());
    }
    $this->emailProvider->register();
}

這樣,您可以輕松地添加,刪除或更新“特殊情況”,而無需進行大量的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM