如何摆脱这种循环依赖


How to get rid of this circular dependency?

我目前正在编写一些类来处理PHP web应用程序中的本地化。

类是:

  • Locale -处理设置和获取用户的区域,时区,语言。
  • LocaleFormat -处理格式化日期,排序,货币格式等
  • Timezone -处理编制国家的时区列表和其他与时区相关的功能。
  • LocaleData -获取区域数据,例如地址格式和邮政编码正则。

整个应用程序工作正常,但我需要添加一些东西到Timezone。

这会导致这个问题:Locale需要Timezone的方法,而Timezone的方法又需要LocaleData的方法,而LocaleData的方法又需要Locale的方法。

如何打破这个循环依赖?我应该把我的课程分成更小的部分吗?有什么处理这种情况的模式吗?

欢呼:)

如果您只调用来自其他类的方法,请先加载所有类,然后您可以在类之间调用方法。不要在类文件中执行任何初始化,这应该在一个单独的"加载器"文件中完成,该文件"包含"这些文件,然后调用does初始化。

如果你得到基于类扩展其他类的循环依赖,那么你需要重新考虑整个设置