php - 如何在不使用全局状态的情况下访问我的单例?

标签 php dependency-injection singleton

我知道单例模式不好,因为它使用全局状态。但是在大多数应用程序中,您需要一个类的单个实例,例如数据库连接。 所以我设计了我的数据库对象,但没有使用单例模式,但我只实例化了一次。

我的问题是,我怎样才能在低级类(对象图中的深处)中访问我的对象而不将它传递到所有地方?

假设我有一个应用程序 Controller ,它实例化(要求工厂实际实例化它)一个页面 Controller ,它实例化一个需要数据库对象的用户模型。

我的应用程序 Controller 和页面 Controller 都不需要知道数据库对象,但 User 类需要。我应该如何将对象传递给它?

感谢您的宝贵时间!

最佳答案

考虑使用全局容器:

  • 您注册确实与应用程序的多个子系统相关的对象。
  • 然后您请求容器那些对象。

这种方法在依赖注入(inject)框架中非常流行(参见 Symfony DI、Yadif)。

关于php - 如何在不使用全局状态的情况下访问我的单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326722/

相关文章:

php - 广告系统提示

c# - CaSTLe Windsor 内联依赖项

Grails 2.1.1 - 将默认注入(inject)的日志对象从 commons.logging.Log 更改为 slf4j.Logger

c++ - Singleton 被构造两次

java - ejb - 调用同一实例的方法时的单例锁定模式?

具有派生对象函数调用的 C++ 单例对象

php - 如何设置定时器功能

php - 获取过去 12 个月的 PHP

php - 如何获取 Google Charts 中的数据 [Symfony 4]

java - 如何在 @Component 构造函数中使用 @Inject ed Spring Environment