3

私は抽象基本クラスを持っています:

abstract class BaseClass {
  /**
   * @return CLASSNAME
   */
  public function fluent() {
    // do stuff
    return $this;
  }
}

一般に、CLASSNAME がある場所に BaseClass を配置すると、すべて問題なく、PDT は phpdoc の戻り値の型を取得し、喜んでオートコンプリートします。

つまり、BaseClass をサブクラス化してメソッドを追加し、コードが派生クラスのインスタンスで競合するまでは。PDT は BaseClass からのメソッドのみを認識し、派生クラスからのメソッドは認識しません。

必要なのは @return self や @return this のようなものです。

PDT にはそのような機能がありますか? または、すべての派生クラスでこれらのメソッドを宣言する必要のない別のトリックはありますか?

4

1 に答える 1

2

私の知る限り、PDTにはそのような機能はありませんが、少なくともタイプヒントを使用できます:

$obj = $osomething->fluent();
/* @var $obj ChildClass */

次に、オートコンプリートで派生したすべてのメソッドを取得します。を呼び出すたびにこのコメントを書くのは面倒ですがfluent()、各派生クラスのメソッドを何度も再定義するよりはましです...

于 2010-03-23T23:19:34.957 に答える