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



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

工厂:

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

仅在需要时延迟创建TestClass实例。

对象

TestClass::class => DIobject()->constructor('param')

如果使用对象,实例是否也是懒惰创建的?

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

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

要回答您的问题:

如果使用对象,实例是否也是懒惰创建的?

的,所有定义都是懒惰地解决的,object()也是如此。

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

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

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

相关内容

  • 没有找到相关文章

最新更新