控制器中的构造函数如何重写为提供者?

时间:2017-11-01 14:47:33

标签: php laravel laravel-5.4

我让这个控制器与MailChimp一起使用:

display:flex;

如何将此构造函数重写为服务提供者?

2 个答案:

答案 0 :(得分:1)

app/Providers/AppServiceProvider.php register()绑定类到服务容器中:

$this->app->bind(MailChimp::class, function () {
    return new MailChimp(getenv('CHIMP_KEY'));
});

现在,在您的控制器中,您有两个选项:

首先是通过app helper解决它:

public function __construct()
{
    $this->MailChimp = app(MailChimp::class);
}

或使用依赖注入:

public function __construct(MailChimp $mailchimp)
{
    $this->MailChimp = $mailchimp;
}

答案 1 :(得分:0)

提供商@寄存器:

让我们不要处理' env'并从配置中拉出(出于缓存原因)。

$this->app->bind(MailChimp::class, function ($app) {
    return new MailChimp($app['config']['services']['mailchimp']['key']);
});

控制器构造函数:

public function __construct(MailChimp $mailchimp) {
    $this->mailchimp = $mailchimp;
}

对于外观,你可以尝试'只使用Real-time Facade

use Facades\SomeNamespace\MailChimp as MailChimp;

public function blah()
{
    MailChimp::get(...);
}