我正在延长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;
}
}
如果您不打算扩展课程,则没有必要,但如果有人这样做,这将阻止他再次执行相同的解决方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)