PHP-DI允许使用一些方法来定义注入,包括工厂和对象:http : //php-di.org/doc/php-definitions.html。
工厂:
TestClass::class => function () {
return new TestClass('param');
}
该TestClass
实例被创建懒洋洋地,仅在需要时它。
对象:
TestClass::class => DI\object()->constructor('param')
如果使用对象,是否也会懒惰地创建实例?
如果是,工厂和对象之间有什么区别?
PHP-DI的作者在这里,似乎存在一些混淆(给出了问题以及其他答案有多错误)。我已经改进了文档,希望可以解决这些问题:ec8120ee。
要回答您的问题:
如果使用对象,是否也会懒惰地创建实例?
是的,所有定义也都懒洋洋地解决object()
了。
如果是,工厂和对象之间有什么区别?
只是语法。在某些情况下,编写闭包更为实用;在其他情况下,您可能希望使用来避免样板object()
。
老实说,这只是一个语法首选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句