2017-03-15 5 views
0

symfony에서 특정 작업을 수행 할 여러 객체를 만들고 싶습니다. 예를 들어, 한 객체 Parser은 public 메서드 parse($text)을 가지며 파싱 된 텍스트를 반환합니다. 다른 모든 메소드는 구문 분석을 관리하는 private입니다.심포니 무료 객체 사용

이 구문 분석 방법에서 일부 작업을 다른 개체로 제외하고 싶습니다. 예 : CleanHighlight.

서비스로 Parser을 포함하고 싶습니다. 그러나 그들을 포함하기 위해 다른 객체의 서비스를 생성해야합니까? 나는 그들을 컨트롤러로 사용할 계획이 없다. Parser 객체 내에서 그냥

new Highlight(); 

그들을 호출 할 수 있습니다하지만 Highlight 내에서 교리의 엔티티 관리자를 사용하고자하기 때문에 지금은 문제를 얻는다. 서비스 내에서 나는 서비스 인수를 통해이를 주입 할 것이지만, Highlight은 불가능한 서비스가 아니기 때문에.

"무료"객체 Highlight에 어떻게 Doctrine을 주입해야합니까? 그리고 일반적으로 symfony에서 이와 같은 객체를 사용하는 것이 좋습니까?

+0

예 - 당신은 Symfony에서 당신이 서비스를 좋아할만한 것을 만들 수 있습니다. http://symfony.com/doc/current/service_container.html#creating-configuring-services-in-the-container – craigh

답변

0

개별적으로 하위 오브젝트 (클리닝, 하이라이트)가 필요하지 않으면 Parser에서 호출 된 각 오브젝트에 대한 서비스를 작성할 필요가 없습니다. 다른 객체를 하위 객체에 전달해야하는 경우 호출 객체 (파서)에서 전달해야합니다. Parser에 엔티티 관리자를 삽입 한 다음 하위 객체에 전달해야합니다.

파서에서

:

new Highlight($em); 

다른 방법으로는 일반적인 종속성 부모 (추상) 서비스에 정의 된 다음 종속 개체에 해당 서비스를 확장하는 추상 서비스를 정의하여이의 변형을 사용할 수 있습니다. 자세한 내용은 docs here을 참조하십시오.