2011-09-17 134 views
6

我目前正在编写几个类来处理PHP Web应用程序中的本地化。如何摆脱这种循环依赖?

的类别是:

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

整个应用程序工作正常,但我需要添加更多的东西到时区。

这会导致此问题: 区域设置需要时区的方法,它需要LocaleData的方法需要Locale的方法。

我该如何打破这种循环依赖?我应该把我的课分成几部分吗?有没有处理这个问题的模式?

干杯:)

回答

2

如果只调用其他类的方法,首先加载所有的类,然后你可以调用类的方法。不要在类文件中执行任何初始化,这应该在一个单独的“加载”文件中“包含”文件,然后调用初始化。

如果您正在获取基于扩展其他类的类的循环依赖关系,那么您需要重新考虑整个设置。

+0

我正面临的问题是由于类的调用方法在对方。由于我使用DI框架使用构造函数注入,所以依赖关系由DI框架实例化。解决方案是Timezone中有一个方法更像是一个格式化程序,所以我只是将它移入LocaleFormat。 – F21