Как мне пометить метод как «возвращает экземпляр текущего класса» в моем phpDoc?
В следующем примере моя IDE (Netbeans) увидит, что setSomething всегда возвращает объект foo
.
Но это не так, если я расширю объект - он вернет $this
, который во втором примере является bar
объектом, а не foo
объектом.
class foo {
protected $_value = null;
/**
* Set something
*
* @param string $value the value
* @return foo
*/
public function setSomething($value) {
$this->_value = $value;
return $this;
}
}
$foo = new foo();
$out = $foo->setSomething();
Так хорошо - setSomething
возвращает foo
- но в следующем примере возвращается bar
..:
class bar extends foo {
public function someOtherMethod(){}
}
$bar = new bar();
$out = $bar->setSomething();
$out->someOtherMethod(); // <-- Here, Netbeans will think $out
// is a foo, so doesn't see this other
// method in $out's code-completion
... было бы здорово решить эту проблему, так как для меня завершение кода - это огромный прирост скорости.
У кого-нибудь есть хитрый трюк или, что еще лучше, правильный способ документировать это с помощью phpDoc?