PHP:重构具有不同返回类型的覆盖方法的好方法

时间:2019-06-08 21:25:50

标签: php return refactoring overriding

基类中方法的返回类型已更改。重构子方法以保持其当前返回类型的好方法是什么?

在下面的示例中,有一个 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());
    }
}

是否有解决此问题的最佳实践?非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在这种情况下,我看到的简单方法是创建一个执行转换的函数,该函数将返回DateTime,并且您不需要覆盖getDate:

class DoStuff extends Database
{
    public function pickDate(): DateTime
    {
        return DateTime::createFromFormat('d-m-Y', $this->getTime());
    }
}

我希望我有所帮助