2012-09-20 2 views
0

젠드 프레임 워크에서 애플리케이션을 개발 중이며 컨트롤러, 서비스, 도메인 모델 및 매퍼와 같은 레이어가 있습니다.어디 PHP는 objectToArray 로직을 넣어? 어느 층?

내 도메인 개체는 여러 가지 목적으로 배열로 표시되어야합니다. 예를 들어, 매퍼는 오브젝트를 지속하기 전에 배열로 변환합니다. 이 폼은 배열을 매개 변수로 사용하여 populate() 메서드가 필요합니다. 다른 몇 가지 예도 있습니다.

내 질문은, 어떤 레이어에서 배열로의 변환을 수행해야합니까? 객체의 번역은 사용 된 문맥에 따라 약간 다릅니다. 오브젝트 ID는 새 오브젝트를 지속 할 때 필요하지 않지만 갱신 사항을 지속 할 때 또는 양식을 채울 때 필요합니다.

내가 알 수있는 한 두 가지 옵션이 있습니다. 옵션 1은 각 구성 요소 (즉, 매퍼, 양식 등)에서 번역을 수행하는 것입니다. 옵션 2는 도메인 객체 자체에 넣고 클라이언트 코드가 매개 변수를 전달하도록하여 어떤 배열 변형이 필요한지 결정합니다. $array = $domObject->toArray('populateForm');

옵션 1에는 상당한 양의 중복이 포함되지만 관심 규칙의 분리를 준수하는 것으로 보입니다. 옵션 2는 중복을 피할 것이지만 도메인 객체가 다양한 방식으로 자신을 표현하는 것에 관심을 가져야하는지 확신하지 못합니다.

아마도 도메인 객체는 '바닐라'배열을 생성해야하며 각 구성 요소는 자체 용도로 맞게 조정해야합니까? 또 다른 요점은 패턴과 관련이 있습니다. 데코레이터 또는 다른 패턴을 적용해야할까요?

귀하의 의견에 감사드립니다!

답변

1

내 생각은 이것입니다. 먼저 올바른 생각을하고 있습니까? 프로젝트에 대한 지식이 없어도 상당히 복잡한 것처럼 들립니다. Zend에게 아주 새로운 누군가가 전형적인 솔루션을 시도하는 것처럼 느끼는 것은 불필요하다는 것을 깨닫게됩니다. 그런 다음 다시 귀하의 프로젝트에 대해 많이 알지 못합니다.

둘째로, 나는 아마도 이러한 기능을 서비스 계층에 넣을 것입니다. 나에게 서비스 계층은 거의 항상 객체 조작에 관한 것이 었습니다.