2011-09-06 2 views
8

내 응용 프로그램 번들의 경우 컨트롤러 나 모델이 아닌 일부 클래스가 필요합니다. 예를 들어, "skill", "efficiency", "beauty"등의 멤버가있는 scorecard 클래스를 갖고 싶습니다. 또한 "meanScore"와 같은 멤버 메서드/getter가있을 수 있습니다.Symfony에서 컨트롤러 나 모델이 아닌 클래스는 어디에 두어야합니까?

Symfony 프레임 워크에서 이러한 클래스는 어디에 있습니까?

답변

8

@Gordon에 동의하는 것은 비즈니스 개체처럼 들리는 것입니다. 그러나 이것이 확실하지 않다면 다음 단계는 어떻게 분류 할 것인지를 파악하는 것입니다. 그게 도우미 야? 이벤트 리스너? 유틸리티 클래스? 일단 그걸 알아 내면 자신에게 물어보십시오 : 번들에 특정한 것입니까, 아니면 프로젝트간에 재사용 할 것입니까?

이벤트 리스너이고 번들에 속한다고 가정 해 보겠습니다. MyBundle/EventListener에 넣으십시오. 도우미라면 MyBundle/Helper에 넣으십시오. 자, 만약 당신이 그것을 재사용 할 계획이라면 (이 경우에 실제로는 그렇게 들리지는 않지만, 나와 함께 견뎌야합니다 ...) 당신은 vendor에 장소를 만드는 것이 더 나을 것입니다.

기억해야 할 중요한 점은 Symfony2는 너무 젊기 때문에 이러한 질문에 답하는 모범 사례 목록이 실제로는 없습니다. 지금은 어떤 것이 효과가 있으며 어떤 효과가 없는지를 보는 것은 우리에게 달려 있습니다. 그것은 야생의 서쪽과 같습니다 :)

2

이 클래스는 도메인의 비즈니스 개체를 분명히 나타내므로 모델에 속합니다.

+0

비즈니스 개체가 아닌 경우는 어떻습니까? 두 멤버 'name'과 'href'가있는 'breadcrumb'클래스가 있다고 가정 해보십시오. –

+0

@ 로버트 Symfony와 Twig가 어디에 넣을 지 모르겠습니다. 나는 도메인 계층 내부가 아니더라도 모델에 넣을 것이지만, 일반적인 응용 프로그램 계층은 UI의 일부이기 때문에 모델에 넣을 것입니다. 또는, 재사용 할 수 있다면, 나는 일종의 프레임 워크/lib 폴더에 넣을 것이다. – Gordon

3

내가 이런 종류의 질문에 대답하는 방식은 KnpBundles으로 가서 다른 개발자들이 어떻게하는지 확인하십시오.

또 다른 주목할 점은 Symfony2는 구성과 관련하여 선택의 자유에 관한 것입니다. 모든 Symfony2 커널에 대해 Random 폴더에있는 모든 것을 스틱으로 고정시킬 수 있습니다. 예를 들어 Listener 또는 EventListener과 같이 차이는 없습니다. 당신이 나 한테 물어 줄 경우

지금, 나는 Scorecard 위해 그런 말 것 - 당신이 그것을 사용하는거야 위치에 따라 어느 Service 또는 breadcrumb 소개

Helper/Util이 - 좋은 예처럼 보인다 나뭇 가지 확장을 위해.

+0

나는 그것이 서비스라고 생각하지 않는다. 서비스는 대개 Domain 객체의 공개 API를 호출하여 계산을 수행합니다. 그들은 자신의 상태 ("기술", "효율성", "아름다움")를 거의 캡슐화하지 않습니다. 그것들은 UI와 같은 외부 레이어와 도메인 레이어 사이의 얇은 조정자 레이어와 비슷합니다. – Gordon

관련 문제