この質問は一般的なDocBlocksに関するものですが、私のユースケースは PHP に関するものです。
次の PHP コードを検討してください。
<?php
class ParentClass {
/**
* Says 'hi' to the world.
* @return ParentClass Returns itself for chaining.
*/
public function say_hi(){
echo 'hi';
return $this;
}
}
class ChildClass extends ParentClass {
/**
* Says 'bye' to the world.
* @return ChildClass Returns itself for chaining.
*/
public function say_bye(){
echo 'bye';
return $this;
}
}
$c = new ChildClass;
$c->say_hi()->say_b| <- type hinting won't suggest "say_bye" here
?>
これは、いくつかの連鎖を伴う単純なクラスです。親クラスの docblock が子クラスのメソッド/プロパティを持たない特定のクラス名を使用しているため、拡張クラスは型ヒントを失います。
タイプヒンティング機能が必要だと仮定すると (そうでない場合は、この質問を残してください - ここで無駄な引数は必要ありません)、どうすればこれを修正できますか?
私は次の可能性を思いつきました:
- PHPDoc 標準を変更して、特別なキーワードを許可する
- docblock を再宣言するためだけに親を呼び出す余分な say_hi() メソッドを追加します。
- 戻り値の型をまったく指定しないでください。IDE が何
return $this;
を意味するかを決定します (これは機能しますか?)