【发布时间】:2019-12-16 08:07:06
【问题描述】:
我有一堆以各种方式操作DateTime 的小程序函数,我突然想到,如果我扩展DateTime 类并将这些函数转换为该类的方法,可能会更容易使用.
好的,我可以做的很简单:
namespace My\Project;
class DateTime extends \DateTime {
... various new methods etc...
}
但是...我也使用DateTimeImmutable 对象,并且还希望在该类中添加这些内容。
有什么方法可以扩展两个这些类以包含我的新功能而无需重复代码? (是的,我知道我可以将新方法复制/粘贴到两个新类中。在这里尝试干燥。)
难道 PHP 没有办法将代码“旁加载”到类中吗?或者一种扩展DateTimeInterface但还包括特定于DateTime和DateTimeImmutable的代码的方法?
像这样扩展通用类是不好的做法吗? (它会在路上咬我吗?)
【问题讨论】:
-
我不认为这是不好的做法。实际上有一个非常好的库,叫做Carbon,它用很多功能扩展了 DateTime。您可以使用所需的功能扩展这两个类,并调用这些类而不是原始类。