其他分享
首页 > 其他分享> > 为何在Ioc容器(如Pimple)中使用匿名函数

为何在Ioc容器(如Pimple)中使用匿名函数

作者:互联网

我知道在Pimple容器中,依赖项被声明为

$container = new Pimple(); 
$container['db'] = function (){
  return new SomeClass; 
}; 

我的问题是,如果我只是这样将依赖项声明为简单数组,该怎么办?

$container = new Pimple();
$container['db'] = new SomeClass; 

有什么区别?

解决方法:

区别是称为lazy loading,特别是lazy initialization.

在您的第一个示例中,SomeClass直到被请求才真正实例化.在第二个示例中,将立即实例化它.因此,即使请求从不访问数据库,也将创建对象并建立连接.

通过使用第一个示例,如果请求从不实际使用数据库,则从不建立与数据库的连接.

标签:oop,php,inversion-of-control
来源: https://codeday.me/bug/20191028/1955273.html