저는 Doctrine 2를 활용하는 Zend Framework 프로젝트를 작업 중입니다. Symfony의 DI 컨테이너를 프로젝트와 함께 사용하려고하는데 문제가 있습니다. 두 개의 인스턴스를 주입해야하는 "Foo"클래스가 있다고 가정합니다. Symfony DI 컨테이너를 설치하면 의존성을 주입 한 새로운 "Foo"를 가져올 수 있습니다. 큰! 그러나 이제 "푸"를 교리 실체로 만들고 싶다면 어떻게해야할까요? DI 컨테이너에서 새 컨테이너를 가져 와서 엔티티를 유지할 수 있기 때문에 모두 엔터티를 DB에 삽입하면됩니다. 그러나 DB Doctrine에서 엔터티를 쿼리하면 "Foo"인스턴스가 인스턴스화되고 적절한 종속성이 주입되지 않습니다. 엔티티가 적절한 의존성을 갖도록 내 DI 컨테이너를 사용하도록 Doctrine을 얻으려면 어떻게해야합니까? 나는 Doctrine이 내 엔티티에 의존성을 주입하는 데 사용할 수있는 "postLoad"훅을 제공하지만 DI 컨테이너의 목적과 이점을 무력화시키는 그런 종류의 것을 제공합니다.Symfony DI 컨테이너가있는 Doctrine 2
2
A
답변
4
Doctrine Entity는 주사 할 수있는 것이 아니라 새로 만들 수있는 것입니다. 엔티티는 DIC를 통해 생성되지 않아야합니다.
0
그것 조금 까다로운하지만 수행 할 수 있습니다 newable와 주 사이의 차이에 대한이 다음 블로그 게시물을 참조하십시오. 이미 존재하는 객체를 컨테이너 빌더 인스턴스에 전달하고 디 컨테이너가이를 위해 (예를 들어, 인터페이스에 기반한 의존성 삽입)하도록 허용하는 심포니 디 컨테이너에 대한 패치가 존재합니다. 패치는 github : https://github.com/lstrojny/symfony에있는이 저장소에 구현되었지만 symfony 마스터 저장소에 업스트림으로 만들지 않았습니다.
는이처럼 사용
$user = new User();
$container->configure('someId', $user);
는 그런 다음 Doctrine's 개의 EventManager와 포스트로드 이벤트 핸들러 (: http://www.doctrine-project.org/docs/orm/2.0/en/reference/events.html 자세한 내용은 여기를 참조)를 등록 할 수 있습니다. 이 이벤트 핸들러에서 앞서 언급 한 메소드를 통해로드 된 엔티티를 구성합니다. 이것은 명백하지만이 경우에는 생성자 주입을 사용할 수 없습니다.
이 설정은 약간 까다 롭습니다. 특히 심포니 디 컨테이너가 인터페이스 기반 종속성을 주입 할 수있는 능력과 함께 특히 강력 할 수 있습니다.
관련 문제
- 1. symfony 2 인증 (doctrine) 엔터티
- 2. Symfony 2 + Doctrine 2 + PHPUnit 3.5 : 클로저 예외 직렬화
- 3. where like - doctrine - symfony
- 4. symfony doctrine : build --all
- 5. Symfony Admin Generator Doctrine executeCreate
- 6. symfony + doctrine + 상속, 어떻게 작동하게할까요?
- 7. Symfony (doctrine) : "Embedding"foreign forms
- 8. symfony/Doctrine : custom find() function
- 9. symfony doctrine build-sql 오류
- 10. mysql_real_escape_string doctrine (symfony)에 대해?
- 11. Doctrine 2 ManyToMany 캐스케이드
- 12. Doctrine 2 오토로더
- 13. Symfony 2/Doctrine - 항상 사용할 수있는 DB 연결? 심포니 2 설명서에 accoring에
- 14. Symfony (2) 템플릿 파일
- 15. Symfony/Doctrine : i18n 콘텐츠의 기본 문화로 대체
- 16. symfony : fzTag-Pugin, Doctrine : 템플릿의 태그를 검색
- 17. symfony + doctrine + PHPUnit을 이용한 유닛 테스트
- 18. Symfony 1.4 작업에서 Doctrine 쿼리 로깅
- 19. symfony/doctrine 사용자 정의 유효성 확인
- 20. symfony doctrine admin generator 가상 열별로 정렬
- 21. Symfony/Doctrine : 액션 대 템플릿에서의 비 직렬화
- 22. symfony : Doctrine 객체의 필드를 반복하는 방법
- 23. Symfony + Doctrine : 부울 값 필드의 기본값 인
- 24. symfony 1.4 및 auto_increment 대신 doctrine autoincrement
- 25. Doctrine 1과 Symfony 1이있는 여러 기본 키?
- 26. Symfony 1.4 Doctrine fixtures는 개별 파일을로드합니까?
- 27. CodeIgniter 2 + 여러 데이터베이스 연결이있는 Doctrine 2
- 28. Doctrine 2 : 프록시 이름 충돌
- 29. SQL 서버에서 doctrine 2 사용
- 30. Doctrine 2 - 모든 레코드 받기
Perfect. 고맙습니다! –