Как избавиться от этой круговой зависимости? - PullRequest
6 голосов
/ 17 сентября 2011

В настоящее время я пишу несколько классов для работы с локализацией в веб-приложении PHP.

Классы:

  • Locale - имеет дело с настройкой и получением языкового стандарта пользователя,часовой пояс, язык.
  • LocaleFormat - имеет дело с форматированием дат, параметров сортировки, валютных форматов и т. д.
  • Часовой пояс - имеет дело с составлением списка часовых поясов для стран и других функций, связанных с часовыми поясами.
  • LocaleData - извлекает данные локали, например, форматы адресов и такие, как регулярные выражения почтового кода.

Все приложение работает правильно, но мне нужно добавить еще несколько вещей в часовой пояс.

Это приводит к следующей проблеме: для Locale требуются методы Timezone, для которых требуются методы LocaleData, для которых требуются методы Locale.

Как можно разорвать эту циклическую зависимость?Должен ли я разбить мои классы на более мелкие части?Существуют ли какие-либо способы борьбы с этим?

Приветствия:)

1 Ответ

2 голосов
/ 17 сентября 2011

Если вы вызываете только методы из других классов, сначала загрузите все классы, затем вы можете вызывать методы между классами. Не выполняйте инициализацию в файлах классов, это должно быть сделано в отдельном файле «загрузчик», который «включает» файлы, а затем вызывает инициализацию выполнения.

Если вы получаете циклические зависимости, основанные на классах, расширяющих другие классы, то вам необходимо переосмыслить всю установку.

...