例如,我们有以下抽象类
<?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文档@return self
在AbsractClass
中标记setParam
,但它不起作用。
这个问题有什么解决办法吗?
要解决此问题,可以使用@return static
PHP文档属性
<?php
class A {
/** @return static */
public function methodA(): A;
}
class B {
/** @return static */
public function methodB(): B;
}
(new B())->methodB()->methodA()->methodB();
此示例中的所有内容都将正确突出显示。