【发布时间】:2019-06-08 21:25:50
【问题描述】:
基类中方法的返回类型已更改。重构子方法以保持其当前返回类型的好方法是什么?
在下面的示例中,有一个 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());
}
}
是否有解决此类问题的最佳实践?非常感谢您的帮助。
【问题讨论】:
-
调用basemethod并转换值。但是您必须更改名称,因为它不再是覆盖。
-
你不妨考虑hiding。但是我不确定这个概念是否存在于 PHP 中。因此是 c# 链接。
-
非常感谢您的回复!不幸的是,隐藏的概念似乎不是 php 中的一个选项。
标签: php return refactoring overriding