web-dev-qa-db-ja.com

@return self、これ、または現在のクラスを使用する必要がありますか?

現在のオブジェクトを返すメソッドがありますが、これをどのように文書化しますか?

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

それとも私は@return selfまたは@return Current_Class_Name


この質問が「主に意見に基づいた」ものではない理由(および再度開く必要がある理由):標準への準拠およびIDEタイプのヒントのサポート。

42
lucaswxp

@return Current_Class_Nameは確実に機能し、私が好むものです。

@return selfは、一部のプログラムでも動作する場合があります。

@return thisはタイプ名ではないため、不正です。

33
RiaD

PHP Standards Recommendation(PSR) は現在ドラフトにあります (PSR-5)提案@ return $ thisは、同じインスタンスが返されることを示すために使用されます。

$ this、このタイプが適用される要素は、指定されたコンテキストの現在のクラスとまったく同じインスタンスです。そのため、返されるインスタンスは同じクラスだけでなく同じインスタンスでなければならないため、このタイプはstaticのより厳密なバージョンです。

このタイプは、Fluent Interfaceデザインパターンを実装するメソッドの戻り値としてよく使用されます。

この表記は現在、PhpStormやNetbeansなどの一般的なIDEで使用されています。

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

「セルフ」タイプは@paramまたは@returnとして使用できます。

PHPDocは、オブジェクト内の自己を参照するために「自己」を推奨しています。

ソース: http://www.phpdoc.org/docs/latest/references/phpdoc/types.html

7
MURATSPLAT

この質問はかなり古いですが、私は皆に共有したいだけです!

AT LEASTNetBeans 8.1 ..この表記はコードのオートコンプリートがうまく機能する = IDEで:

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

NetBeans8.1ユーザーの場合、AT LEASTと言いますが、は動作する可能性があります古いバージョンや他のIDEも=)

6
Diego Calero