noi*_*eed 11 php inheritance datetime extend php-5.3
我正在扩展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;
}
}
Run Code Online (Sandbox Code Playgroud)
net*_*der 13
这是要走的路.但是,由于你想要做的是渲染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;
}
}
Run Code Online (Sandbox Code Playgroud)
没有必要,如果你不打算扩展课程,但如果有人这样做,它将阻止他再次做同样的解决方法.