虽然这个问题一般是关于 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 正在使用不具有子类的方法/属性的特定类名。
假设我们确实想要类型提示功能,(如果没有,请留下这个问题 - 我不想要无用的参数),我应该如何解决这个问题?
我想出了以下可能性:
return $this;
的含义(这甚至有效吗?) 最佳答案
你可以这样解决:
class ParentClass {
/**
* Says 'hi' to the world.
* @return static
*/
public function say_hi(){
echo 'hi';
return $this;
}
}
“@return static”语句完全符合您的要求,PhpStorm 可以很好地使用它。
关于php - DocBlock 类类型继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12377935/