我有一个可以回复调用第三方付款解决方案的课程。
作为其中的一部分,存在各种商家id /共享秘密参数。 论文将取决于谁登录了该应用程序。
我正在使用的类在构建类时在构造函数中获取此信息。有没有办法在服务提供商中传递这个,可能是这样的:
$this->app->bind( 'App\BokaKanot\Interfaces\BillingInterface',function ($merchantId)
{
return new KlarnaBilling($merchantId);
} );
如果是这样,是否仍然可以通过构造函数执行此操作,或者我是否需要手动使用App:make
。如果我必须使用App::make
,我怎么能不在调用类中隐藏它?
或者我应该重构我在构造函数中不需要它的类,并且可能有一个init方法?
答案 0 :(得分:2)
您可以将参数传递给App::make
并将参数传递给构造函数,如下所示:
$this->app->bind( 'App\BokaKanot\Interfaces\BillingInterface',
function( $app, array $parameters)
{
//call the constructor passing the first element of $parameters
return new KlarnaBilling( $parameters[0] );
} );
//pass the parameter to App::Make
App::make( 'App\BokaKanot\Interfaces\BillingInterface', [ $merchantId ] );
答案 1 :(得分:2)
在laravel 5.4(https://github.com/laravel/framework/pull/18271)上,您需要使用IoC容器的makeWith方法。
inp = [1 0 1; 0 0 0; 1 1 0]; %Input matrix
C = nchoosek(1:size(inp,1),2); %Number of rows taken 2 at a time
out = inp(C(:,1),:) .* inp(C(:,2),:); %Multiplying those rows to get the desired output
如果您仍然使用5.3或更低版本,上述答案将起作用