gpt4 book ai didi

php - 在 PHP 中扩展 DateTime 和 DateTimeImmutable

转载 作者:行者123 更新时间:2023-12-05 02:11:32 24 4
gpt4 key购买 nike

我有一堆以各种方式操作 DateTime 的小程序函数,我想到如果我扩展 DateTime 可能会更容易使用类并将这些函数转化为类的方法。

好吧,我可以做的很简单:

namespace My\Project;

class DateTime extends \DateTime {
... various new methods etc...
}

但是...我还使用 DateTimeImmutable 对象,并且还希望在该类中添加这些内容。

有什么方法可以 扩展这些类以包含我的新功能,无需重复代码? (是的,我知道我可以将新方法复制/粘贴到两个新类中。这里尽量保持干爽。)

难道 PHP 没有办法将代码“旁加载”到类中吗?还是一种扩展 DateTimeInterface 但也包括特定于 DateTimeDateTimeImmutable 的代码的方法?

像这样扩展通用类是不好的做法吗? (它会在路上咬我的屁股吗?)

最佳答案

只需创建这两个类,每个类都扩展DateTimeDateTimeImmutable,以及一个具有所有“新方法等”的特征,您可以直接在两者中使用

trait Convenient {
public function echo() : void {
echo "bar\n";
}
}

class A extends \DateTime {
use Convenient;
}

class B extends \DateTimeImmutable {
use Convenient;
}

关于“最佳实践”,这是一个见仁见智的问题;但很难想象有人会反对扩展基类。出于很多正当理由,它一直在完成。理想情况下,客户端脚本应该以接口(interface)为目标,而不是类。

有几个众所周知且广泛使用的库,例如 CarbonChronos在基本日期时间对象上扩展。在重新发明它们之前,您可能想检查一下。

关于php - 在 PHP 中扩展 DateTime 和 DateTimeImmutable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57415533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com