扫码关注官方订阅号
这是一段项目代码,$this['config']赋值了一个闭包函数,实际是new了一个新对象,请问一下这样写和直接new新对象有什么区别呢?或者有什么优点?
光阴似箭催人老,日月如移越少年。
截图中的类Cashier是一个Service Container。简单地说,如果直接new Config($config),那么实例化Cashier的时候,就必然会创建Config实例,不管有没有用到。使用闭包,只是赋予了获取依赖(即Config实例)的方法,这样只有在需要用到的时候,才会调用进行实例化。
Cashier
new Config($config)
Config
关于使用闭包来处理依赖注入的实践,可以参考这篇文章:http://fabien.potencier.org/o...。
起到了lazyload的作用, 延迟加载. 写在闭包中, 不会马上new一个class, 而是在调用闭包后再创建一个对象.
lazyload
new
class
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
截图中的类
Cashier是一个Service Container。简单地说,如果直接new Config($config),那么实例化Cashier的时候,就必然会创建Config实例,不管有没有用到。使用闭包,只是赋予了获取依赖(即Config实例)的方法,这样只有在需要用到的时候,才会调用进行实例化。关于使用闭包来处理依赖注入的实践,可以参考这篇文章:http://fabien.potencier.org/o...。
起到了
lazyload的作用, 延迟加载. 写在闭包中, 不会马上new一个class, 而是在调用闭包后再创建一个对象.