2017-12-17 6 views
0

컨테이너를 컴파일하기 전에 사용되지 않은 서비스가 컨테이너에서 제거되었다는 것을 ServiceContainer의 Symfony 설명서에서 읽었습니다.Symfony ServiceContainer가 컴파일 후 서비스를 제거합니다.

이제 컨테이너가 캐시되지 않은 경우 요청에 따라 컨테이너를 컴파일합니다.

사용하지 않은 서비스가 제거되지 않도록하려면 어떻게해야합니까? 특히 컨테이너를 컴파일 한 후에 필요하지 않은 경우 어떻게합니까?

나는 원래 (원래 Symfony 컨테이너에서 가져온 코드) 컨테이너를 본질적으로 다시 작성함으로써 Drupal이이를 수행한다는 것을 알고 있지만, 이것이 옵션 일지라도 이것을 수행하는 데 더 효율적인 방법이 있는지 궁금합니다. 또한 필자는 Symfony에 비교적 익숙하지 않기 때문에 관련 문서 링크가 크게 감사 할 것입니다.

답변

2

기본적으로 모두 사용되지 않은 private Symfony 서비스는 개인적인 것이며 단순히 외부에서 호출되도록 정의되지 않았기 때문에 제거됩니다.

private 서비스를 한 번만 사용하면 서비스가 인라인되고 컨테이너에서 제거됩니다.

그러나 public 서비스는 DI 컨테이너에 서비스를 유지하려면, 그래서 만약 당신이 공공 있는지 확인, 사용하지 않는 경우에도, 컨테이너에서 제거되지 않습니다