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