虽然这个问题一般是关于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 标准以允许使用特殊关键字
- 添加一个多余的 say_hi() 方法,它调用父级只是为了重新声明 docblock
- 根本不指定返回类型,让 IDE 决定什么
return $this;
意思(这甚至可以工作吗?)