PHP-DI - 工厂和对象之间的区别
PHP-DI - Differences between Factories and Objects
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,实例是否也是懒惰创建的?
如果是,工厂和对象有什么区别?
PHP-DI 作者,似乎有些混乱(考虑到问题以及其他答案的错误程度)。我已经改进了文档,希望可以解决问题:ec8120ee.
回答您的问题:
If you use Objects, is the instance also created lazily?
是,所有的定义都是延迟解析的,object()
也是。
If yes, what's the difference between factories and objects?
只是语法。在某些情况下,编写闭包更实用,在其他一些情况下,您可能希望通过使用 object()
.
来避免样板文件
老实说,这只是语法偏好。
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,实例是否也是懒惰创建的?
如果是,工厂和对象有什么区别?
PHP-DI 作者,似乎有些混乱(考虑到问题以及其他答案的错误程度)。我已经改进了文档,希望可以解决问题:ec8120ee.
回答您的问题:
If you use Objects, is the instance also created lazily?
是,所有的定义都是延迟解析的,object()
也是。
If yes, what's the difference between factories and objects?
只是语法。在某些情况下,编写闭包更实用,在其他一些情况下,您可能希望通过使用 object()
.
老实说,这只是语法偏好。