在 Hyperf 中,ApplicationContext::getContainer()->get() 创建的对象是从 IoC 容器中获取的对象,而 make() 创建的对象是通过工厂类创建的对象。

区别如下:

  1. 获取对象的方式不同,前者是通过 IoC 容器获取,后者是通过工厂类创建。

  2. 生命周期不同,通过 IoC 容器获取的对象是单例模式,而通过工厂类创建的对象是每次都会创建一个新的对象。

  3. 通过 IoC 容器获取的对象可以在类的构造方法中注入,而通过工厂类创建的对象则无法在构造方法中注入。

总之,通过 IoC 容器获取的对象具有更好的性能和更好的可维护性,因为它们是单例的,可以在整个应用程序中共享,而且可以在构造方法中注入。而通过工厂类创建的对象则可以在需要时创建新的对象,但每次创建都会有一定的性能损失。

Hyperf 中 getContainer()->get() 和 make() 创建对象的区别与生命周期

原文地址: https://www.cveoy.top/t/topic/nic2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录