我正在尋找一種將類轉換爲其父類的方法。情況:在PHP中轉換爲超類php
爲了減少與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
無法在php – zerkms 2013-04-10 00:33:10
中投射對象「我後來發現它正在破壞」 - 以什麼特殊方式? – zerkms 2013-04-10 00:33:45
將一個參數的靜態'diff'方法添加到您的類,並調用:'myDateTime :: diff',將您的數據在類中轉換爲'DateTime'對象並調用'DateTime :: diff'或實現您的代碼。 – mkjasinski 2013-04-10 00:40:22