Laravel-通过app传递参数->;绑定到模型&x27;s构造函数
代码描述了这一切。我有一个实体服务提供者,它传递一个Playlist模型的实例,它应该得到一个数组作为它的第一个构造函数参数。如何通过app->bind传递该参数?知道EntityServiceProvider在控制器中引用时自动注入Laravel-通过app传递参数->;绑定到模型&x27;s构造函数,laravel,entity,service-provider,Laravel,Entity,Service Provider,代码描述了这一切。我有一个实体服务提供者,它传递一个Playlist模型的实例,它应该得到一个数组作为它的第一个构造函数参数。如何通过app->bind传递该参数?知道EntityServiceProvider在控制器中引用时自动注入 // Current Code /** * Playlist Entity * * @return Playlist\PlaylistEntity */
// Current Code
/**
* Playlist Entity
*
* @return Playlist\PlaylistEntity
*/
$this->app->bind('Playlist\PlaylistEntity', function($app)
{
return new PlaylistEntity($app->make('Playlist\PlaylistRepositoryInterface'));
});
// Should be something like this:
/**
* Playlist Entity
*
* @return Playlist\PlaylistEntity
*/
$this->app->bind('Playlist\PlaylistEntity', function($app)
{
return new PlaylistEntity($app->make('Playlist\PlaylistRepositoryInterface', $parameters));
});
类似的情况:亚历克斯·拉塞尔的评论对我也很有用
就我所知,“类似案例”帖子中的答案是正确的<代码>$this->app->bind('Whatever',函数($app,$params){var_dump($params);})代码>后跟
App::make('Whatever',[1,2,3])
var_为我转储[1,2,3]
数组
在Laravel 5.4中,在使用App::make()从容器解析时传递配置参数的功能被删除并随后被删除
顺便说一句,我试着对之前的答案发表评论,但它不让我这么做。可能是因为经验不足 感谢@yevgeniy afanasyev在嘲笑时指出问题。如果您需要模拟这些实例,可以参考Taylor Otwell的早期建议: 我只是需要它,而且效果很好。当您
::make
时,只需返回一个闭包并调用它
//服务提供者
$this->app->bind(MyClass::class,function($app){
返回函数($param):MyClass
{
返回新的MyClass($param);
}
}
//::制造
$myInstance=App::make(MyClass::class)($myParameter);
//嘲弄
$myMock=mockry::mock(新的MyClass($myParameter));
$this->instance(MyClass::class,function($param)use($myMock){return$myMock;});
就我所知,“类似案例”帖子中的答案是正确的。$this->app->bind('Whatever',function($app,$params){var_dump($params);
后跟app::make('Whatever',[1,2,3]);
var_转储[1,2,3]
array对我来说。如何使用Facades not make实现这一点?它是否可能被确认。对我来说也适用,即使在最新版本(5.3)中也要小心makeWith
与make
不同,它不允许在应用程序容器中放置其他对象,例如app()->实例(MyClass::class,$myObject)
,模仿现在被打破了。即使在laravel 5.6中也是如此