2012-11-13 3 views
0

엔티티에 대한 비즈니스 로직은 엔티티 클래스 내부가 아닌 별도의 클래스 (서비스)에 있어야한다는 것을 읽었습니다. 그것은 나에게 맞고 문제는 없지만 엔티티 상속이있을 때 어떤 일이 발생합니까?Symfony 2.1에서 상속 된 엔티티에 대한 비즈니스 로직 다루기

나는 Ride라는 추상 수퍼 클래스로 "Commute"와 "SingleRide"라는 두 개의 엔티티가 있음을 의미합니다. 이 두 클래스는 약간의 로직을 공유하기 때문에 서비스는 괜찮을 것이지만, 동시에 각각은 자신의 논리를 가지고 있습니다.

예를 들어 엔티티 클래스에 따라 달라지는 "ride description"을 얻고 싶다면 "ride"에 대해 하나의 서비스를 사용하여 어떻게 처리 할 수 ​​있습니까? 각 라이드 서브 클래스에 대한 서비스를 생성해야합니까? (엔터티 구조 반복)

이 경우 어떻게 다형성 방식으로 "타기"를 관리 할 수 ​​있습니까?

답변

0

추상 클래스에 공유 논리를 추가하십시오. RIDES가 공통적으로 가지고있는 것들.

모든 특정 구현은 다른 사람이 수행하지 않는 작업을 어린이에게 맡깁니다.

서비스를 사용하여 다양한 유형의 상황에서 사용할 수있는 특정 유형과 관련이없는 논리를 배치 할 수 있습니다. (예 : 템플리트, 데이터베이스 액세스, 로깅, 파일 액세스 등은 Symfony 서비스입니다. 다른 곳으로 주입 할 수있는 일반적인 목적의 기능이지만 엔티티 또는 특정 기능과 결합되지 않습니다.)

+0

답변 해 주셔서 감사합니다. 필자는 Symfony 엔터티 클래스에서 데이터베이스에 저장할 데이터 만 조작하고 비즈니스 논리는 해당 클래스 외부에 있어야한다고 생각했습니다 (일부 도우미 서비스에서). – Izzy

+0

내 말은, 이러한 엔티티 클래스도 "getLongDescription"과 같은 템플릿 메서드를 관리해야한다는 의미입니다. 이 경우, 엔티티 클래스 내에서 번역 서비스를 사용할 수 없습니다 ... 저는 아직도 약간 혼란 스럽습니다. 어쨌든 고마워! – Izzy

+0

글쎄, 무엇을 하려는지는 모르겠지만 기본적으로 엔티티는 데이터 저장소 (데이터베이스 또는 다른 소스 일 수 있음)와 애플리케이션 로직간에 일부 데이터를 매핑하는 방법 일뿐입니다. 대부분의 경우 필드, getters 및 setters의 무리와 함께 단지 간단한 clases입니다. 그것들은 또한 몇 가지 기본 논리를 포함 할 수 있지만 논리, 템플리트 또는 유효성 확인 (서비스는 TWIG, 유효성 검사기가 있습니다)을 포함하지 않을 수 있습니다. – Xocoatzin

관련 문제