찾다

 >  Q&A  >  본문

@returns 속성의 하위 클래스를 반환하는 메서드

<p>추상 클래스 <code>Foo</code>와 추상 빌더 <code>FooBuilder</code></p> <pre class="brush:php;toolbar:false;">추상 클래스 Foo { } 추상 클래스 FooBuilder { 보호된 푸 $model; /*** 반환 클래스 인스턴스 * * @return 모델 //올바른 반환 유형은 무엇입니까? ?*/ 공개 함수 get() { $this->모델을 반환합니다. } } </pre> <p>하위 빌더에서 <code>get()</code> 메소드를 사용하고 싶지만 IDE에서 반환 유형이 추상 <code>Foo</code>가 아닌 하위 클래스임을 감지했습니다. . </p> <pre class="brush:php;toolbar:false;">class Bar는 Foo {를 확장합니다. } 추상 클래스 BarBuilder { 공개 함수 __construct() { $this->model = new Bar(); } } $barBuilder = BarBuilder(); $bar = $barBuilder->get(); //유형은 "Bar"이지만 IDE는 "Foo"라고 인식합니다. </pre> <p>PHPDoc에 클래스 대신 속성의 정적 유형을 반환하는 방법이 있나요? <code>@return static($this->model)</code>와 유사합니까? </p> <p>예를 들어 <code>SomeModel::find()</code>에서 Laravel의 Eloquent를 사용하는 경우가 있습니다. IDE는 유형이 <code>SomeModel</code>일 수 있다는 것을 알고 있습니다. 하지만 <code>@return</code>에는 <code>Model</code>만 있습니다. </p>
P粉310931198P粉310931198452일 전532

모든 응답(1)나는 대답할 것이다

  • P粉107991030

    P粉1079910302023-08-30 21:49:39

    예제에서는 Foo를 반환 유형으로 사용해야 하지만 재미를 위해 아래와 같이 하위 인스턴스를 결정하기 위해 정적 반환 유형을 사용할 수 있습니다.

    으아악

    회신하다
    0
  • 취소회신하다