8.2. Theorie der Arbeitsweise

Warum gibt es nur eine Klasse Zend_Date für das Arbeiten mit Daten und Zeiten im Zend Framework ?

Viele Sprachen teilen das Arbeiten mit Zeiten und Kalendern in zwei Klassen. Aber der Zend Framework strebt nach extremer Vereinfachung und die Entwickler zu zwingen verschiedene Objekte mit verschiedenen Methoden für Zeiten und Daten zu verwenden ist in vielen Situationen eine Belastung. Da die Methoden von Zend_Date das Arbeiten mit vieldeutigen Daten unterstützen die möglicherweise nicht alle Datumsabschnitte beinhalten (Zeitalter, Jahr, Monat, Tag, Stunde, Minute, Sekunde, Zeitzone), können Entwickler die Flexibilität und die einfache Handhabung der selben Klasse und der selben Methode geniessen um die gleichen Änderungen durchzuführen (zum Beispiel Addieren, Subtrahieren, Vergleichen, Verbinden von Datumsabschnitten, und vieles mehr). Das Aufteilen der Handhabung dieser Datumsabschnitte in verschiedene Klassen würde Komplikationen hervorrufen wenn einfaches gemeinsames Arbeiten und eine kleine Lernkurve gewünscht sind. Eine einzige Klasse reduziert die Verdopplung von Code für gleichartige Arbeiten, ohne die Notwendigkeit einer komplexen Ableitungshirarchie.

8.2.1. Internes

  • UNIX Zeitpunkte

    Alle Daten und Zeiten, selbst die mehrdeutigen (z.B. kein Jahr), sind intern dargestellt in absoluten Momenten der Zeit, repräsentiert als UNIX Zeitpunkt welcher die Differenz zwischen der gewünschten Zeit und dem 01.Jänner 1970 00:00:00 GMT/UTC darstellt. Das ist nur deshalb möglich weil Zend_Date nicht durch UNIX Zeitpunkte limitiert ist und auch nicht durch Integer Zahlen. Die BCMath Erweiterung wird benötigt um extrem große Daten ausserhalb des Bereichs vom Freitag dem 13.Dezember 1901 20:45:54 GMT bis zum 19.Jänner 2038 03:14:07 GMT zu unterstützen. Zusätzlich können kleine Mathematikfehler aufgrund der inhärenten Beschränkungen des Float-Datentyps sowie durch Rundung auftreten, es sei denn, die BCMath Extension wird verwendet.

  • Datumsabschnitte als Offsets in Zeitpunken

    Deswegen wird eine Objektinstanz welche drei Stunden repräsentiert ausgedrückt als drei Stunden nach dem 01.Jänner.1970 00:00:00 GMT/UTC bzw. 0 + 3 * 60 * 60 = 10800 dargestellt.

  • PHP Funktionen

    Wo es möglich ist verwendet Zend_Date normalerweise PHP Funktionen um die Geschwindigkeit zu erhöhen.