Laravel:如何覆盖传输器实例

时间:2019-02-19 21:48:45

标签: laravel service-provider

我正在研究Laravel的服务提供商,并且开始尝试覆盖Illuminate\Mail\MailServiceProvider

几天后,我到达了想要的地方:registerSwiftMailer方法。

真正引起我注意的是以下评论:

// ..., which allows us to
// override this transporter instances during app start-up if necessary.

要点是:如果需要,在应用程序启动过程中“真的”有可能“覆盖”传输器实例,又怎么可能从控制器中做到这一点?


registerSwiftMailer

    public function registerSwiftMailer()
    {
        $this->registerSwiftTransport();

        // Once we have the transporter registered, we will register the actual Swift
        // mailer instance, passing in the transport instances, which allows us to
        // override this transporter instances during app start-up if necessary.
        $this->app->singleton('swift.mailer', function ($app) {
            if ($domain = $app->make('config')->get('mail.domain')) {
                Swift_DependencyContainer::getInstance()
                                ->register('mime.idgenerator.idright')
                                ->asValue($domain);
            }

            return new Swift_Mailer($app['swift.transport']->driver());
        });
    }

0 个答案:

没有答案