PHP-DI - 工厂与对象之间的差异

时间:2017-08-20 22:49:48

标签: php php-di

PHP-DI允许一些方法定义注入,包括工厂和对象:http://php-di.org/doc/php-definitions.html

工厂

TestClass::class => function () {
   return new TestClass('param');
}

只有在需要时才会懒惰地创建TestClass实例。

物件

TestClass::class => DI\object()->constructor('param')

如果你使用Objects,那么实例也是懒惰创建的吗?

如果是,工厂和物体之间有什么区别?

1 个答案:

答案 0 :(得分:3)

PHP-DI作者在这里,似乎存在一些混淆(给出问题以及其他答案有多么错误)。我已经改进了文档,希望能够解决问题:ec8120ee

回答你的问题:

  

如果你使用Objects,那么实例也是懒惰创建的吗?

,所有定义都会延迟解决,object()

  

如果是,工厂与物体之间的区别是什么?

只是语法。在某些情况下,编写闭包更实用,在其他一些情况下,您可能希望使用object()来避免使用样板。

老实说,这只是一种语法偏好。