현재 저는 Symfony를 기반으로 Shopware 6 확장 프로그램을 개발 중입니다. 내가 이해하지 못하는 것은 추상 클래스와 종속성 주입을 구현하는 방법입니다.
그래서 저는 코드를 리팩터링하고 이러한 방법을 자주 사용하고 싶지만 다른 컨텍스트에서(다른 저장소 사용)
으아악보시다시피 구성(제품 저장소) 내부에 종속성 주입이 있습니다. 이제 내 질문은 추상 클래스를 어떻게 만들 수 있느냐는 것입니다. 즉, 이러한 메서드를 저장하지만 하위 클래스는 필수 저장소로 상위 구성을 "재정의"합니다. 예를 들어, Product Repository에서 getDataId(현재는 getExistingProductId라고 불리지만 추상 클래스에서 리팩토링되고 이름이 바뀔 예정임) 메서드를 사용하고 싶지만 다음 클래스에서는 Category에서 동일한 메서드를 사용하고 싶습니다. 저장소 방법?
Service.xml은 종속성 주입기라고도 함
으아악저는 OOP를 처음 접합니다. 좋은 예제와 코드 설명을 제공해 주세요. 감사해요!
제가 올바르게 이해했다면 첫 번째 매개변수만 교환 가능하고 예제의 3가지 메소드가 추상화로 구현되어야 한다는 것입니다. 여기에 아이디어가 있습니다.
요약:
으아아아생성자에서 저장소를 가져오고 추상화에서 공통 저장소에 대한 모든 공통 메소드를 구현합니다.
getDataId
각 메서드에 대해 특정 조건(아마도)을 사용하기 때문에 확장 클래스에서 구현하려는 메서드입니다. 따라서 추상 서명을 정의하여 확장 클래스에서 강제로 구현하면 됩니다.귀하의 서비스 수준:
으아아아확장 클래스에서는 주입된 다른 서비스가 이 특정 인스턴스에서만 사용되기 때문에 저장소를 상위 생성자에게만 전달합니다. 특정 조건을 생성하고 해당 조건으로 protected(확장 프로그램에서만 사용할 수 있기 때문에)
searchId
메서드를 호출하는getDataId
并使用该条件调用受保护的(因为它只能由扩展使用)searchId
를 구현할 수 있습니다.