Разрешение одноэлементного объекта из контейнера IoC

У меня возникают некоторые проблемы при использовании контейнера IoC в Laravel 4.2

У меня есть 2 класса: BlockFactory а также Block, Они предназначены для отображения блоков контента (так же, как модулей Joomla), где один Block представляет собой блок контента и BlockFactory представляет «контейнер» этих блоков. это BlockFactory есть метод рендеринга, который я хочу вызвать для рендеринга всех блоков.

Что я сделал, так это создал BlockServiceProvider следующим образом:

public function register()
{
$this->app->singleton('BlockFactory', function () {
return new BlockFactory();
});
$this->app->bind('block', 'Animekyun\Block\Block'); // Facade
}

Я делаю инъекцию BlockFactory класс в Block конструктор, чтобы я мог добавить блоки на заводе:

public function __construct(BlockFactory $blockFactory)
{
$this->blockFactory = $blockFactory;
}

public function create($title, $content, $parameters)
{
$this->title = $title;
$this->content = $content;
$this->parameters = $parameters;

return $this;

}

public function push()
{
$this->blockFactory->add($this);
}

Из того, что я понимаю, является то, что когда я использую метод singleton с контейнером IoC, я могу получить доступ к BlockFactory изнутри контейнера, и это будет один и тот же экземпляр снова и снова. Что-то вроде глобальной переменной.

Однако я не смог получить доступ BlockFactory в любом случае, не создавая его снова. Я старался App::make('BlockFactory') но согласно документации он просто вызывает обратный вызов, определенный в поставщике услуг.

Это возможно? Каковы другие способы сделать это?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]