2016-07-06 2 views
2

나는 Dependency injection with custom Doctrine 2 hydrator과 거의 동일한 문제를 가지고 있지만 사용자 지정 데이터 형식에 서비스를 주입해야합니다.사용자 지정 Doctrine 2 데이터 형식을 사용하여 종속성 삽입

Doctrine이 클래스 자체를 초기화 할 때 참조 된 질문의 해결책은 교리 소스 코드를 복제하고 수정하는 것에 의존합니다. 사용자 정의 데이터 유형에 또 다른 접근 방법이 유용할까요?

Symfony3 응용 프로그램을위한 것으로, 거기에 적용 할 마법이있을 수 있습니다. 초기 문제의 코멘트를

+0

Doctrine이 사용자 지정 데이터 형식을 인스턴스화하는 방법은 무엇입니까? doctrine을위한'Type :: addType ($ name, $ className)'메쏘드는 클래스 이름이 아니라 클래스의 인스턴스를 원합니다. 당신이 할 수있는 것은 번들 확장 클래스 내에 커스텀 교리 타입을 추가 한 다음, 필요한 의존성을 가진'kernel.request'에 이벤트 리스너 서비스를 등록하고'\ Doctrine \ DBAL \ Types :: getType ($ name) -> setSomeDependency ($ dependency);'. 그래도 좀 지저분 해. – ChadSikorra

+1

@ChadSikorra 그것은 [여기] (http://php-and-symfony.matthiasnoback.nl/2012/09/symfony2-mongodb-odm-creating-custom-types-with-dependencies/) 접근법과 비슷합니다. 질문을 게시 한 직후, 이벤트 리스너없이 발견되었습니다. 나는 이것을 지금 실험하고 있으며 그것은 유망한 것으로 보인다. 답변을 귀하의 의견을 추가하고 그것을 받아 들일 것입니다. – bblue

답변

1

이 하드하게 무엇

교리는 사용자 정의 데이터 형식을 인스턴스화하는 방법입니다. doctrine에 대한 Type::addType($name, $className) 메소드는 클래스의 인스턴스가 아니라 클래스 이름을 원합니다. 할 수있는 일은 번들 확장 클래스 내에 사용자 정의 교리 유형을 추가 한 다음 필요한 종속성이있는 kernel.request에 이벤트 수신기 서비스를 등록하고 \Doctrine\DBAL\Types::getType($name)->setSomeDependency($dependency);을 호출하여 데이터 유형으로 설정하는 것입니다. 그래도 좀 지저분 해.

마티아스의 기사에서 잘 찾았습니다. 확장 클래스의 boot() 메서드는 종속성을 설정하는 자연스러운 장소처럼 보입니다.

관련 문제