我对此很陌生,所以请跟我说。:)我有两个接口的实现,我们只是命名它们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,现在它可以工作了!我现在可以根据用户输入在实现之间切换:)
- 1 回答
- 0 关注
- 70 浏览
添加回答
举报
0/150
提交
取消