我有一個兒童班。我的父類有一個實體方法,可以克隆$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實體?
uj5u.com熱心網友回復:
您可以添加以下 PHPDoc 塊,PhpStorm 將知道實際回傳的物件
class myParentClass
{
/**
* @return static
*/
public function doAThing()
{
$clone = clone $this;
// ... doing things
return $clone;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/354610.html
