gpt4 book ai didi

Laravel - 通过 app->bind 传递参数到模型的构造函数

转载 作者:行者123 更新时间:2023-12-04 14:00:55 25 4
gpt4 key购买 nike

好吧,代码描述了这一切。我有一个实体服务提供者,它传递一个播放列表模型的实例,它应该获取一个数组作为它的第一个构造函数参数。如何通过 app->bind 传递该参数?知道在 Controller 中引用 EntityServiceProvider 时会自动注入(inject)。

        // 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));
});

类似案例: Laravel 4: Passing data from make to the service provider

最佳答案

感谢@yevgeniy-afanasyev 在 mock 时指出问题。如果您需要模拟这些实例,您可以在这里引用 Taylor Otwell 的早期建议:https://github.com/laravel/ideas/issues/391#issuecomment-285197048

我只是需要它,而且效果很好。只需返回一个闭包并调用它,当您 ::make .

// Service Provider
$this->app->bind(MyClass::class, function ($app) {
return function($param) : MyClass
{
return new MyClass($param);
}
}

// ::make
$myInstance = App::make(MyClass::class)($myParameter);

// mock
$myMock = Mockery::mock(new MyClass($myParameter));
$this->instance(MyClass::class, function($param) use ($myMock) { return $myMock; });

关于Laravel - 通过 app->bind 传递参数到模型的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21746687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com