私は主に Zend Framework コンポーネントに基づいた CMS を開発しています。この 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
私は、モデルをどのように粒度化する必要があるかについて、ちょっと迷っています。
1 つのオプションは、メソッドSiteLocale
からオブジェクト/モデル (つまり、DB テーブル表現)を返すことです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()
もう 1 つのオプションは、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
正しい道は何だと思いますか?なぜ?
さらに、最初の選択肢 (または両方の選択肢) は、デメテルの法則に違反しますか?
編集(1 月 22 日)
私はジェフの答えが好きですが、私はまだ新しい/他の視点を受け入れています。