>  기사  >  백엔드 개발  >  laravel에서는 상위 클래스에 객체를 주입한 다음, 다른 하위 클래스에 따라 이 객체의 다른 구현을 주입하고 싶습니다. 방법이 있나요?

laravel에서는 상위 클래스에 객체를 주입한 다음, 다른 하위 클래스에 따라 이 객체의 다른 구현을 주입하고 싶습니다. 방법이 있나요?

WBOY
WBOY원래의
2016-12-01 00:56:211011검색

상위 클래스에 개체를 삽입한 다음 하위 클래스에 따라 이 개체의 다른 구현을 삽입하고 싶습니다.

상위 클래스에서 이 객체를 사용하기 때문에 하위 클래스에 주입할 수는 없지만 다른 구현이 필요합니다.

삽입된 코드를 제어합니다.

laravel에서는 상위 클래스에 객체를 주입한 다음, 다른 하위 클래스에 따라 이 객체의 다른 구현을 주입하고 싶습니다. 방법이 있나요?

부모 클래스에 객체가 주입되기 때문에 이렇게 작성하면 작동하지 않습니다.

laravel에서는 상위 클래스에 객체를 주입한 다음, 다른 하위 클래스에 따라 이 객체의 다른 구현을 주입하고 싶습니다. 방법이 있나요?

답글 내용:

상위 클래스에 개체를 삽입한 다음 하위 클래스에 따라 이 개체의 다른 구현을 삽입하고 싶습니다.

상위 클래스에서 이 객체를 사용하기 때문에 하위 클래스에 주입할 수는 없지만 다른 구현이 필요합니다.

삽입된 코드를 제어합니다.

laravel에서는 상위 클래스에 객체를 주입한 다음, 다른 하위 클래스에 따라 이 객체의 다른 구현을 주입하고 싶습니다. 방법이 있나요?

부모 클래스에 객체가 주입되기 때문에 이렇게 작성하면 작동하지 않습니다.

laravel에서는 상위 클래스에 객체를 주입한 다음, 다른 하위 클래스에 따라 이 객체의 다른 구현을 주입하고 싶습니다. 방법이 있나요?

방법 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는 원하는 대로 이에 의존합니다.

왜 이렇게 디자인됐나요?

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.