尝试将IoC用作工厂。我可以用?
传递数据来初始化/构造对象App::bind('Song', function(){
return new Song;
});
并模仿这个($ data永远不会传递,为什么?)
App::bind('Song', function($data=null){
return new Song($data);
});
而班级是
class Song extends Eloquent {
protected $fillable = array(
'id',
'name',
'type'
);
}
App::make('Song',array('id'=>1,'name'=>'foo'))
调用会跳过在Illuminate \ Container中插入我的参数 - 初始化的类不包含任何已定义的属性。
答案 0 :(得分:1)
您可以使用'use'将数据传递给匿名函数:
App::bind('Song', function() use ($data) {
return new Song($data);
});
答案 1 :(得分:0)
定义Song对象绑定。 $dynamicData
可以是任何具体对象,数组或基本类型。
App::bind('Song', function($app, $dynamicData){
return new Song($dynamicData);
});
将动态数据传递给具体对象
$song = App::make('Song', ['name' => 'foo', 'type' => 'bar']);