Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于用户输入的中间件Laravel/Lumen绑定接口_Php_Laravel_Lumen - Fatal编程技术网

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
中注册了我的服务容器,现在它可以工作了!我现在可以根据用户输入在实现之间切换:)