클래스를 부모 클래스로 캐스트 할 방법을 찾고 있습니다. 상황 :PHP에서 수퍼 클래스로 변환
DateTime 개체의 저글링을 줄이기 위해 __toString
메서드가 포함되도록 DateTime 클래스를 확장했습니다. 이 아름답게 작동하지만
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();
}
}
, 나는 나중에 내가 들어오는 object
이 DateTime
것으로 확인되었다고 가정하고 DateTime::diff
을 깨는 발견했다.
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에는 항상 모든 값이 0으로 지정됩니다.
상속 된 클래스의 유형 변환을 수행하는 가장 효율적인 방법에 대한 제안 사항이 있습니까? 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
"나중에 깨지는 것을 발견했습니다"--- 어떤 특별한 방법으로? – zerkms
클래스에 하나의 매개 변수로 정적'diff' 메소드를 추가하고 그것을 호출합니다 :'myDateTime :: diff', 클래스의 데이터를'DateTime' 객체로 변환하고'DateTime :: diff'를 호출하거나 코드를 구현하십시오. – mkjasinski