2013-05-25 3 views
0

Пытается использовать IoC как завод. Могу ли я передавать данные для инициализации/построения объекта?Возможно ли инициализировать Laravel IoC данными?

App::bind('Song', function(){ 
    return new Song; 
}); 

и имитировать это (может $ данных никогда не будет принят вместе, почему?)

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 \ Контейнер - инициализированный класс не содержит никаких определенных атрибутов.

ответ

1

Вы можете передать данные в анонимную функцию с помощью «использовать»:

App::bind('Song', function() use ($data) { 
    return new Song($data); 
}); 
0

Определить песни объект привязки. $dynamicData может быть любым конкретным объектом, массивом или примитивным типом.

App::bind('Song', function($app, $dynamicData){ 
    return new Song($dynamicData); 
}); 

Pass динамические данные к конкретному объекту

$song = App::make('Song', ['name' => 'foo', 'type' => 'bar']); 
Смежные вопросы