Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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
Laravel-通过app传递参数->;绑定到模型&x27;s构造函数_Laravel_Entity_Service Provider - Fatal编程技术网

Laravel-通过app传递参数->;绑定到模型&x27;s构造函数

Laravel-通过app传递参数->;绑定到模型&x27;s构造函数,laravel,entity,service-provider,Laravel,Entity,Service Provider,代码描述了这一切。我有一个实体服务提供者,它传递一个Playlist模型的实例,它应该得到一个数组作为它的第一个构造函数参数。如何通过app->bind传递该参数?知道EntityServiceProvider在控制器中引用时自动注入 // Current Code /** * Playlist Entity * * @return Playlist\PlaylistEntity */

代码描述了这一切。我有一个实体服务提供者,它传递一个Playlist模型的实例,它应该得到一个数组作为它的第一个构造函数参数。如何通过app->bind传递该参数?知道EntityServiceProvider在控制器中引用时自动注入

        // 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中也是如此