젠드 프레임 워크 구성 요소를 기반으로 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
나는에 가지 해요 내가 모델을 정의하는 방법 granularized에 울타리 :
하나의 옵션은 SiteLocale
개체를 반환하는 것입니다 /를 listLocales()
방법이 SiteLocale
객체의 공동에서 (즉 DB를 테이블 표현) 모델 다음과 같은 방법 ntain :
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
당신은 무엇을 생각 하는가 올바른 방법으로는 가기? 그리고 왜?
첫 번째 옵션 (또는 두 옵션 모두)이 Law of Demeter을 위반합니까?
편집 (1월 22일)
내가 다른/새로운 관점에 대한 임 열려 Jeff's 대답을 좋아하지만.
안녕하세요, Jeff, 답변 해 주셔서 감사합니다.복제에 관해서는 참조 무결성 제약 조건 (InnoDB)을 사용하고 있으므로 languageCode 및 regionCode는 제약 조건이있는 외래 키입니다. 로캘 테이블에 가입하지 않고도 many-to-many 행 집합을 쉽게 가져올 수 있으므로이 스타일을 좋아합니다. 하지만 사이트에서 분리 된 로케일을 추가 할 수 있기를 원합니다. 희망이 의미가 있습니다. 어쨌든, 나는 네가하는 말을 본다. 두 가지 옵션을 모두 사용하도록 설득했다고 생각합니다. 내가 언급 한 두 가지 시나리오를 모두 활용할 것이기 때문입니다 (처음에는 프론트 엔드에서, 두 번째는 관리 백엔드에서). 귀하의 의견을 보내 주셔서 감사합니다. –
다시 한 번 감사드립니다. Jeff. 내 케이크 먹고 먹을거야. :) –