상위 클래스에 개체를 삽입한 다음 하위 클래스에 따라 이 개체의 다른 구현을 삽입하고 싶습니다.
상위 클래스에서 이 객체를 사용하기 때문에 하위 클래스에 주입할 수는 없지만 다른 구현이 필요합니다.
삽입된 코드를 제어합니다.
부모 클래스에 객체가 주입되기 때문에 이렇게 작성하면 작동하지 않습니다.
상위 클래스에 개체를 삽입한 다음 하위 클래스에 따라 이 개체의 다른 구현을 삽입하고 싶습니다.
상위 클래스에서 이 객체를 사용하기 때문에 하위 클래스에 주입할 수는 없지만 다른 구현이 필요합니다.
삽입된 코드를 제어합니다.
부모 클래스에 객체가 주입되기 때문에 이렇게 작성하면 작동하지 않습니다.
방법 1: 부모 클래스의 액션 메서드에 인스턴스를 직접 주입하지 마세요. 부모 클래스는 다른 메서드에서 관련 인스턴스를 얻고, 서브 클래스는 이 메서드를 재정의하고 자체적으로 주입된 인스턴스를 반환합니다. 예:
학부모 수업:
<code class="php">public function update() { $this->validate($this->getRequest(), ...); } protected function getRequest() { return app(Request::class); }</code>
하위 카테고리:
<code class="php">protected function getRequest() { return app(RoleRequest::class); }</code>
방법 2: 특성을 사용합니다.
방법 3: __construct에 주입합니다. 방법 1과 마찬가지로 상위 클래스의 __construct는 어떤 매개 변수에도 의존하지 않으며 하위 클래스의 __construct는 원하는 대로 이에 의존합니다.
왜 이렇게 디자인됐나요?