PHP赋值闭包函数的意义

图片描述

这是一段项目代码,$this['config']赋值了一个闭包函数,实际是new了一个新对象,请问一下这样写和直接new新对象有什么区别呢?或者有什么优点?

阅读 4.2k
2 个回答

截图中的类Cashier是一个Service Container。简单地说,如果直接new Config($config),那么实例化Cashier的时候,就必然会创建Config实例,不管有没有用到。使用闭包,只是赋予了获取依赖(即Config实例)的方法,这样只有在需要用到的时候,才会调用进行实例化。

关于使用闭包来处理依赖注入的实践,可以参考这篇文章:http://fabien.potencier.org/o...

起到了lazyload的作用, 延迟加载. 写在闭包中, 不会马上new一个class, 而是在调用闭包后再创建一个对象.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题