CGollhardt
Mitglied
Hallo,
folgendes kleines Demo Projekt:
Wie bereits im Kommentar geschrieben, erfolgt die Ausgabe "DateTime". Ich erwarte allerdings "Foo".
Woran liegt das? Wie kann man dies umgehen?
Habe mir jetzt folgende Lösung überlegt:
Aber hier werden ja alle Benifits des DateTime objektes verworfen, weil eine Convertierung über den UnixTimestamp erfolgt.
Gibt es eine elegantere Lösung?
folgendes kleines Demo Projekt:
PHP:
<?php
namespace Example;
class Foo extends \DateTime {
static function Get($date) {
return self::createFromFormat('d.m.Y', $date);
}
}
$bar = Foo::Get('20.06.2013');
echo get_class($bar);
//Ausgabe: DateTime
//Erwartet: Foo
?>
Wie bereits im Kommentar geschrieben, erfolgt die Ausgabe "DateTime". Ich erwarte allerdings "Foo".
Woran liegt das? Wie kann man dies umgehen?
Habe mir jetzt folgende Lösung überlegt:
PHP:
$dateTime = new CustomDateTime();
//Todo: Besseren Weg finden, auskommentierte Zeile funktioniert nicht. Bug???
//$dateTime = self::createFromFormat($format, $str);
$tempDateTime = \DateTime::createFromFormat($format, $str);
if ($tempDateTime !== false) {
$dateTime->setTimestamp($tempDateTime->getTimestamp());
}
return $dateTime;
Aber hier werden ja alle Benifits des DateTime objektes verworfen, weil eine Convertierung über den UnixTimestamp erfolgt.
Gibt es eine elegantere Lösung?