4

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,实例也是懒惰创建的吗?

如果是,工厂和对象有什么区别?

4

1 回答 1

4

PHP-DI 作者在这里,似乎有些混乱(考虑到问题以及其他答案的错误程度)。我已经改进了文档,希望可以解决问题:ec8120ee

要回答您的问题:

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

的,所有的定义也都是懒惰的object()

如果是,工厂和对象有什么区别?

只是语法。在某些情况下,编写闭包更实用,在其他一些情况下,您可能希望通过使用object().

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

于 2017-08-21T05:52:48.167 回答