Php 基于用户输入的中间件Laravel/Lumen绑定接口
我对这个很陌生,所以请跟我谈谈。:) 我有两个接口的实现,让我们把它们命名为Php 基于用户输入的中间件Laravel/Lumen绑定接口,php,laravel,lumen,Php,Laravel,Lumen,我对这个很陌生,所以请跟我谈谈。:) 我有两个接口的实现,让我们把它们命名为BankService1和BankService2,它们都遵循interface 通常,如果我只需要一个实现,我只需要在bootstrap/app.php中绑定接口和实现,并将接口注入控制器的构造函数。但是,我希望基于用户输入动态绑定实现,如下所示: //如果汇款为真,请使用银行1或银行2 $PaymentService=($request['Transmission']?'BankService1':'BankServ
BankService1
和BankService2
,它们都遵循interface
通常,如果我只需要一个实现,我只需要在bootstrap/app.php
中绑定接口和实现,并将接口注入控制器的构造函数。但是,我希望基于用户输入动态绑定实现,如下所示:
//如果汇款为真,请使用银行1或银行2
$PaymentService=($request['Transmission']?'BankService1':'BankService2');
$this->app->bind('My\Namespace\paddlementInterface',“My\Namespace\\{$paddlementservice}”);
我认为中间件是这样做的最佳场所,因为我需要$request
对象。然而,我很难绑定这些实现,因为正如我所说的,我在这方面还是很新的
有什么建议吗?我想出来了。我实际上只需要创建一个服务容器!我根本不需要它在中间件中
ServiceProvider类扩展了ServiceProvider
{
公共职能登记册()
{
$this->app->singleton(接口::类,函数($app){
如果($此->应用->请求->汇款){
返回新的BankService1();
}
返回新的BankService2();
});
}
}
之后,我在bootstrap/app.php
中注册了我的服务容器,现在它可以工作了!我现在可以根据用户输入在实现之间切换:)