从IoC容器中解析单个对象

时间:2014-12-26 22:58:49

标签: php laravel ioc-container

我在使用Laravel 4.2中的IoC容器时遇到了一些麻烦

我有两个课程:BlockFactoryBlock。它们用于显示内容块(非常类似于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);
}

据我所知,当我在IoC容器中使用单例方法时,我可以从容器中访问BlockFactory,它将一遍又一遍地成为同一个实例。像全局变量的东西。

但是,无论如何我都无法再次实例化BlockFactory。我尝试了App::make('BlockFactory'),但根据文档,它只调用服务提供程序中定义的回调。

这可能吗?有什么其他方法可以做到这一点?

0 个答案:

没有答案