Symfony 6 상위 컨트롤러에서 하위 컨트롤러로의 종속성 주입
<p>모든 하위 컨트롤러가 사용하는 일부 유틸리티 메서드가 포함된 기본 컨트롤러 클래스가 있습니다. 현재는 3개의 종속성이 있지만 앞으로는 더 많아질 수 있습니다. 따라서 하위 컨트롤러에 종속성을 추가하려고 할 때마다 종속성 주입에 대한 지시문이 너무 많다고 생각되는 문제가 발생합니다. </p>
<pre class="brush:php;toolbar:false;">추상 클래스 BaseController는 AbstractController를 확장합니다.
{
공개 함수 __construct(
보호된 읽기 전용 SerializerInterface $serializer,
보호된 읽기 전용 ValidatorInterface $validator,
개인 읽기 전용 ResponseGenerator $responseGenerator,
) {
}
...
}
ChildController 클래스는 BaseController를 확장합니다.
{
// 모든 하위 클래스에는 모든 상위 클래스 삽입이 필요합니다.
공개 함수 __construct(
SerializerInterface $ 직렬 변환기,
ValidatorInterface $검증기,
응답 생성기 $responseGenerator,
개인 읽기 전용 SomeRepository $someRepository,
...여기에 다른 하위 컨트롤러 관련 종속성을 삽입합니다.
) {
parent::__construct($serializer, $validator, $responseGenerator);
}
...
}</pre>
<p>기본 컨트롤러에서 <code>$this->container->get('serializer')</code>를 사용해 보았지만 <code>AbstractController: 때문에 작동하지 않았습니다. $container는 주입을 통해 정의되지만 생성자가 없으므로 <code>parent::__construct()를 호출할 수 없습니다. 또한 <코드>유효성 검사기</code>를 제공하지 않으므로 작동하더라도 문제의 일부만 해결합니다. </p>
<p>다음과 같이 사용할 수 있는 속성을 찾아보았습니다. </p>
<pre class="brush:php;toolbar:false;">추상 클래스 BaseController는 AbstractController를 확장합니다.
{
#[주입]
보호된 읽기 전용 SerializerInterface $serializer;
#[주입]
보호된 읽기 전용 ValidatorInterface $validator;</pre>
<p>그러나 비슷한 것은 발견되지 않았습니다(PHP-DI에는 있지만 Symfony에는 없습니다). </p>
<p>하위 컨트롤러에서 중복 종속성을 어떻게든 제거할 수 있는 방법이 있습니까? </p>