gpt4 book ai didi

php - 使 DateTime::createFromFormat() 返回子类而不是父类

转载 作者:可可西里 更新时间:2023-10-31 22:12:36 26 4
gpt4 key购买 nike

我正在扩展 DateTime,添加一些有用的方法和常量。

当使用 new 创建一个新对象时,一切都很好,但是当使用静态方法 createFromFormat 时,它总是返回原始的 DateTime 对象并且当然没有任何子方法可用。

我正在使用以下代码来规避此问题。这是最好的方法吗?

namespace NoiseLabs\DateTime;

class DateTime extends \DateTime
{
static public function createFromFormat($format, $time)
{
$ext_dt = new self();

$ext_dt->setTimestamp(parent::createFromFormat($format, time)->getTimestamp());

return $ext_dt;
}
}

最佳答案

这是要走的路。但是,由于您想做的似乎是使 DateTime 类可扩展,我建议您使用 static 而不是 self:

namespace NoiseLabs\DateTime;

class DateTime extends \DateTime
{
static public function createFromFormat($format, $time)
{
$ext_dt = new static();
$parent_dt = parent::createFromFormat($format, $time);

if (!$parent_dt) {
return false;
}

$ext_dt->setTimestamp($parent_dt->getTimestamp());
return $ext_dt;
}
}

如果您不打算扩展类(class),则没有必要,但如果有人这样做,这将阻止他再次执行相同的解决方法。

关于php - 使 DateTime::createFromFormat() 返回子类而不是父类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5450197/

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