如何在 parent class 方法中克隆 child class 实例
How to clone a child class instance within a parent class method
我有一个childclass。我的 parent class 有一个实例方法可以克隆 $this
并流畅地 returns 克隆。我想将该实例方法与我的 child class 实例一起使用,但我在 IDE (PhpStorm) 中得到提示,返回值是 parent class,而不是我预期的 child class:
<?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
实例?
您可以添加以下 PHPDoc 块,PhpStorm 将知道实际返回的对象
class myParentClass
{
/**
* @return static
*/
public function doAThing()
{
$clone = clone $this;
// ... doing things
return $clone;
}
}
我有一个childclass。我的 parent class 有一个实例方法可以克隆 $this
并流畅地 returns 克隆。我想将该实例方法与我的 child class 实例一起使用,但我在 IDE (PhpStorm) 中得到提示,返回值是 parent class,而不是我预期的 child class:
<?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
实例?
您可以添加以下 PHPDoc 块,PhpStorm 将知道实际返回的对象
class myParentClass
{
/**
* @return static
*/
public function doAThing()
{
$clone = clone $this;
// ... doing things
return $clone;
}
}