明確にするために、$thisを使用すると、現在のクラスのオブジェクトのみを示す必要がありますよね?
PhpDocumentor は現在 (v1.4.3) $thisを、クラス自体のデータ型に相当する特定のキーワードとして認識しません。
@return タグで使用するのに適切なデータ型の値は、PHP で認識されているデータ型と PhpDocumentor によって既に解析されているクラスのみです。常に「$this を返す」流暢なメソッドのドキュメント化を支援するために、PhpDocumtentor で利用可能ないくつかのオプションを用意するという機能要求があります。[1]
@var タグの場合、クラス変数に独自のクラス インスタンスを含めることがどのように実現できるかわかりません。そのため、「@var $this」の言うべきことを理解できません。
ただし、 $this の意図が「 $this を返す」流暢なメソッドではなく、単に PhpDocumentor および/または IDE へのショートカットであり、 $thisを使用して意味するデータ型を魔法のように推測することであった場合、私は 'それを行う方法はないと推測する必要があります。私ができる最も近い提案は、この特定の var/return が実行時にある可能性があるさまざまな子クラスすべてに共通の親である親クラスの名前を使用し、タグの説明部分を使用してインラインにすることです。可能な子クラスをリストする {@link} タグ。
例: Child1、Child2、および Child3 の子を持つ Parent 抽象クラスがあり、それぞれが実行時の Foo クラスで発生する可能性があります。
したがって、Foo::_var は実行時にこれらの子クラス型のいずれかになる可能性がありますが、これをどのように文書化すればよいでしょうか?
/**
* @var Parent これは、{@link Parent}、{@link Child1}、{@link Child2}、または {@link Child3} のいずれかの子になります。
*/
保護された $_var;
「return $this」の問題に戻ると、同様の方法で文書化します。
/**
* 流暢なメソッド (つまり、このクラスのインスタンス オブジェクトを返します)
* @return Parent これは、{@link Parent}、{@link Child1}、{@link Child2}、または {@link Child3} のいずれかの子になります。
*/
パブリック関数 foo() {
$これを返します。
}
このように文書化することで、少なくともクラスのドキュメントに特定のクラスへのリンクを含めることができます。それができないことは、流暢さを際立たせることです。ただし、IDE がクラス名を認識できる場合は、他のクラスへの必要な論理リンクを実行できる可能性があります。タグの説明でクラス名にカーソルを合わせると、Eclipse は少なくともポップアップ ヘルプでこれを実行できると思います。Eclipse がこれを使用して、さまざまな子クラスのメソッドをコード補完で使用できるようにすることはできないと思います。私が明示的にリストしたデータ型は Parent であるため、コード補完のための Parent メソッドについて知っているでしょうが、それは IDE ができる限りです。
[1] -- http://pear.php.net/bugs/bug.php?id=16223