我在使用Laravel 4.2中的IoC容器时遇到了一些麻烦
我有两个课程: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);
}
据我所知,当我在IoC容器中使用单例方法时,我可以从容器中访问BlockFactory
,它将一遍又一遍地成为同一个实例。像全局变量的东西。
但是,无论如何我都无法再次实例化BlockFactory
。我尝试了App::make('BlockFactory')
,但根据文档,它只调用服务提供程序中定义的回调。
这可能吗?有什么其他方法可以做到这一点?