찾다
Q&A @returns 속성의 하위 클래스를 반환하는 메서드
@returns 속성의 하위 클래스를 반환하는 메서드
P粉310931198 2023-08-29 23:28:05 보다 672
PHP

0
<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>
Your Answer
제출하다

1 답변
0

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

으아악
2023-08-30 21:49:39

제출하다

Hot Tools

vc9-vc14(32+64비트) 런타임 라이브러리 모음(아래 링크)

vc9-vc14(32+64비트) 런타임 라이브러리 모음(아래 링크)

phpStudy 설치에 필요한 런타임 라이브러리 모음을 다운로드하세요.

VC9 32비트

VC9 32비트

VC9 32비트 phpstudy 통합 설치 환경 런타임 라이브러리

PHP 프로그래머 도구 상자 정식 버전

PHP 프로그래머 도구 상자 정식 버전

Programmer Toolbox v1.0 PHP 통합 환경

VC11 32비트

VC11 32비트

VC11 32비트 phpstudy 통합 설치 환경 런타임 라이브러리

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.