【发布时间】:2021-12-22 12:57:58
【问题描述】:
我有一个儿童班。我的父类有一个实例方法,可以克隆$this 并流畅地返回克隆。我想将该实例方法与我的子类实例一起使用,但我在 IDE (PhpStorm) 中得到提示,返回值是父类的实例,而不是我所期望的子类的实例:
<?php
class myParentClass
{
public function doAThing()
{
$clone = clone $this;
// ... doing things
return $clone;
}
}
class myChildClass extends myParentClass {
public function doTricks()
{
// ... do some tricks
}
}
$myChild = new myChildClass();
$myChild = $myChild->doAThing(); // returns myParentClass instance, not myChildClass
$myChild->doTricks(); // Error, myParentClass doesn't have a doTricks() method
如何让myChildClass::doAThing() 传回myChildClass 实例?
【问题讨论】:
-
你的php版本是什么,一切正常3v4l.org/HhjnA
-
使用 v7.4。我的 IDE 只是抱怨我使用了错误的返回类型,所以它不会为我的子类实例提供提示。尝试了各种 PHPDoc 提示并声明
:self返回类型,但无济于事。 -
您使用的是哪个 IDE?请将此添加到您的问题中。
-
@greeflas PHPStorm。添加到问题
标签: php phpstorm clone extends