2011-08-04 4 views
30

현재 개체를 반환하는 메서드가 있는데 어떻게 문서화합니까?@return self, this 또는 현재 클래스를 사용해야합니까?

/** 
* set something 
* 
* @return this 
*/ 
public function setSomething(){ 
      // ... 
    return $this; 
} 

아니면 내가 @return self 또는 @return Current_Class_Name을해야합니까?

+3

정적 인 경우 : http://stackoverflow.com/questions/5858031/php doc-and-late-static-or-dynamic-binding – Greg

답변

26

@return Current_Class_Name 확실히 작동하며 내가 선호하는 것입니다.

@return self 일부 프로그램에서도 제대로 작동 할 수 있습니다.

@return this은 typename이 아니기 때문에 좋지 않습니다.

+1

"current_Class_Name 반환"은 IDE 자동 완성이 성공할 수있게하기 때문에 현재로서는 가장 잘 작동합니다. phpDocumentor [1] 및 Eclipse PDT [2]가 "return $ this"를 인식하도록 기능 요청이 있습니다. [1] - http://pear.php.net/bugs/bug.php?id=16223 [2] - https://bugs.eclipse.org/bugs/show_bug.cgi?id= 276082 – ashnazg

+2

PhpStorm은'@return self '를 지원합니까 – sarunast

+3

메소드를 작성하는 기본 클래스가 아닌 서브 클래스를 반환하려면 어떻게해야합니까? –

5
/** 
* set something 
* 
* @return self 
*/ 
public function setSomething(){ 
      // ... 
    return $this; 
} 
당신은 @param 나 @return 등 "자기"유형을 사용할 수 있습니다

..

하는 PHPDoc은 객체 자체를 참조하는 '자기'.. 권장

출처 : http://www.phpdoc.org/docs/latest/references/phpdoc/types.html

+0

이것은 서브 클래스가 제대로 작동하지 않습니다.서브 클래스가 그 서브 클래스를 오버라이드 (override)하지 않는 경우, 해석자는 같은 서브 클래스를 가지는 오브젝트가 돌려 주어질 필요가있는 것을 모릅니다. – SOFe

28

현재 PHP Standards Recommendation (PSR)이 초안에 있습니다. (PSR-5) that proposes@return $이이 사용되어 동일한 인스턴스가 반환되었음을 나타냅니다.

$ this,이 유형이 적용되는 요소는 지정된 컨텍스트에서 현재 클래스와 동일한 정확한 인스턴스입니다. 이와 같은 유형은 정적 클래스의보다 엄격한 버전이므로 반환되는 인스턴스는 동일한 클래스 일뿐만 아니라 동일한 인스턴스 여야합니다.

이 유형은 종종 유창한 인터페이스 디자인 패턴을 구현하는 메소드의 반환 값으로 사용됩니다.

이 표기법은 현재 PhpStorm 및 Netbeans와 같은 널리 사용되는 IDE에서 사용됩니다.

+3

PSR이'$ this'를 추천하는 것처럼 들리므로 답변이 오해의 소지가 있습니다. 나는 이것이 사실이라고 생각하지 않는다. 단순히'Current_Class_Name'과'self'와 같이 * 허용합니다. – marcv

+0

질문에 대한 질문에서'@return $ this'가 아니라'@return this'라는 것에주의하십시오. – SOFe

+0

나는 PHP 폭풍을 사용한다. $는 자기와 \ 클래스가 netbeans 8.2에 대해서 –

3

이 질문은 꽤 오래되었지만 모두에게 공유하고 싶습니다. 내가 NetBeans8.1 사용자를위한 AT LEAST

/** 
* Method that returns $this instance (using late state binding) 
* @return static 
*/ 
public function iWillReturnMyself () { 
    return $this; 
} 

: 넷빈즈 8.1를 사용하는 사람을위한

AT LEAST은 ..이 표기법은 잘 IDE에서 작동하도록 코드 자동 완성한다 하지만 은 이전 버전 및/또는 다른 IDE에서을 사용할 수도 있습니다.

+0

을하지 않지만 – Tebe

관련 문제