我知道在 Pimple 容器中,依赖项被声明为
$container = new Pimple();
$container['db'] = function (){
return new SomeClass;
};
我的问题是,如果我只是将依赖项声明为像这样的简单数组会怎样。
$container = new Pimple();
$container['db'] = new SomeClass;
有什么区别?
区别在于所谓的延迟加载,特别是延迟初始化。
在您的第一个示例中,SomeClass
在被请求之前实际上不会实例化。在您的第二个示例中,它会立即实例化。因此,即使请求从未命中数据库,也会创建对象并建立连接。
通过使用第一个示例,如果请求从未实际使用数据库,则永远不会建立与数据库的连接。