Я разрабатываю CMS в основном на основе компонентов Zend Framework. Вот некоторые из таблиц базы данных для этой CMS:
site
| id | name |
-------------
locale
| languageCode | regionCode |
-----------------------------
site_locale // link sites with locales
| siteId | languageCode | regionCode | isActive | isDefault |
-------------------------------------------------------------
У меня есть модель с именем Site
, которая состоит, среди прочего, из следующих методов:
getId()
getName()
listLocales() // list all locales for this site
Я как бы на грани того, насколько детализировано я должен определять модели:
Одним из вариантов может быть возвращение SiteLocale
объектов/моделей (другими словами, представление таблицы БД) из listLocales()
метода, где эти SiteLocale
объекты содержат следующие методы:
getSite() // returns the Site model
getLocale() // returns a Zend_Locale
isActive() // is this locale active for the site this model represents?
isDefault() // is this the default locale for the site this model represents()
Другой вариант — просто создать следующие методы в модели Site
и покончить с этим:
getDefaultLocale() // simply return the default site locale as Zend_Locale
listActiveLocales() // simply return all active site locales as Zend_Locales
listAllLocales() // simply return all site locales as Zend_Locales
Какой путь вы считаете правильным? И почему?
Кроме того, будет ли первый вариант (или, возможно, даже оба варианта) нарушать Закон Деметры?
EDIT (22 января)
Хотя мне нравится Джеффа ответ, я все еще открыт для новых/других перспектив.