基类中方法的返回类型已更改。重构子方法以保持其当前返回类型的好方法是什么?
在下面的示例中,有一个 Database 类,该类现在返回一个 date 作为简单的 string 。另一方面,继承的类将覆盖 getDate ,并且仍应返回 DateTime 。
注意:无法更改基类中的实现。
想法: 重命名 DoStuff 类中的 getDate 方法。
class Database
{
public function getDate(): string
{
return '01-01-0001';
}
}
class DoStuff extends Database
{
public function getDate(): DateTime
{
return DateTime::createFromFormat('d-m-Y', parent::getDate());
}
}
是否有解决此问题的最佳实践?非常感谢您的帮助。
答案 0 :(得分:1)
在这种情况下,我看到的简单方法是创建一个执行转换的函数,该函数将返回DateTime,并且您不需要覆盖getDate:
class DoStuff extends Database
{
public function pickDate(): DateTime
{
return DateTime::createFromFormat('d-m-Y', $this->getTime());
}
}
我希望我有所帮助