【发布时间】:2018-12-04 15:44:54
【问题描述】:
例如我们有如下抽象类
<?php
class AbstractClass {
public function setParam(): AbstractClass {}
}
class ConcreteClass extends AbstractClass {
public function test():void {}
}
当你尝试像这样使用它时
<?php
(new ConcreteClass())->setParam()->test();
然后在setParam 之后我们将只看到setParam 方法,因为setParam 返回AbstractClass。我尝试使用 PHP-doc @return self 在 AbsractClass 中标记 setParam,但它不起作用。
这个问题有解决办法吗?
【问题讨论】:
-
@NigelRen 我只是把代码写得尽可能小。在完整代码中,
setParam内部有return $this,您可以看到setParam方法的返回类型是AbstractClass。这段代码运行良好,但 IDEA 在setParam之后看不到test方法,因为setParam返回 AbstractClass,IDE 仅帮助您使用来自AbstractClass的方法。 -
这个问题不清楚IDE中的问题,您使用的是哪一个?
-
@NigelRen 我正在使用 JetBrains PHPStorm
标签: php design-patterns casting phpstorm intellisense