我正在寻找一种将类投射到其父级的方法。情况:
为了减少与 DateTime 对象的混淆,我扩展了 DateTime 类以包含一个__toString
方法。
class myDateTime extends DateTime{
public $formatstring = null;
public function format($format = null) {
if(null === $format){
$format = $this->formatstring;
}
if(null === $format){
$format = 'Y-m-d H:i:s';
}
return parent::format($format);
}
public function __toString(){
return $this->format();
}
}
虽然这很好用,但我后来发现它正在中断DateTime::diff
,我假设正在检查传入object
的是DateTime
.
public function TotalTime(){
$start = $this->getStart();
$end = $this->getEnd();
$diff = $end->diff($start);
$minutes =
($diff->days*1440) +
($diff->h * 60) +
($diff->i * 1) +
($diff->s / 60);
echo("<pre>Start:$start\nEnd:$end\nMin:$minutes\n</pre>");
var_dump($diff);
return $minutes;
}
生成的 DateInterval 始终将每个值都归零。
关于对继承类进行类型转换的最有效方法有什么建议吗?PHP 5.4
编辑: 这似乎取决于环境。目前,这似乎只发生在 Windows/PHP 上。
PHP 5.4.10 (cli) (built: Dec 19 2012 20:33:35)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies