Datumsangabe in Funktion: Zeitstempel oder einzelne Werte?

Parantatatam

mag Cookies & Kekse
Hallo,

ich entwickle seit einigen Wochen ein Klassenkonstrukt zum Erstellen eines Atom-Feeds, also einen Atom-Feed-Generator. Wie man weiß, muss man auch Uhrzeit und Datum angeben (und Zeitzone). Jetzt habe ich überlegt, was denn sinnvoller wäre:

Variante 1: (Zeitstempel)
PHP:
public function datetime($timestamp, $timezone = NULL) {
    // ...
}
Variante 2: (einzelne Werte)
PHP:
public function datetime($year, $month, $day, $hour, $minute, $second, $timezone = NULL) {
    // ...
}

Also zu welcher Variante würdet ihr tendieren oder gibt es noch eine bessere Möglichkeit, die ich noch nicht in Betracht zog? Ich wäre euch sehr dankbar, wenn ihr mir in diesem Punkt helfen könntet um die Nutzerfreundlichkeit zu erhöhen.

PS: Da der Generator was fertig ist, werde ich ihn demnächst auch hier veröffentlichen. Wenn sich jemand interessiert, der ihn auch testen wollte, dann fände ich das nett, da man selbst als Entwickler irgendwann den Wald vor lauter Bäumen nicht mehr sieht.
 
Ich würde die Klasse DateTime erweitern und beide Varianten einbauen. Dann hat der Anwender mehrere Möglichkeiten, je nach bedürfnis.
Auch ein String-Parser würde ich dazubauen (siehe date_parse_from_format() ab PHP5.3).

PHP:
<?php 
class Atom extends DateTime{
    
    public function setTimestamp($timestamp, $timezone = NULL) {
//Ab PHP 5.3 mit parent::setTimestamp($timestamp) lösen        
        $date = getdate($timestamp);
        $this->setDatetime($date['year'], $date['mon'], $date['mday'], $date['hours'], $date['minutes'], $date['seconds'], $timezone);           
    } 
    
    public function setDatetime($year, $month, $day, $hour, $minute, $second, $timezone = NULL) {
        $this->setDate($year, $month, $day);
        $this->setTime($hour, $minute, $second);
        if ($timezone) $this->setTimezone($timezone);
    }
    
    public function getFormated(){
        return $this->format(DATE_ATOM);
    } 
}


$atom = new Atom();
echo $atom->getFormated()."<br />";

$timestamp = mktime(15,00,59,2,13,2010);
$atom->setTimestamp($timestamp);
echo $atom->getFormated()."<br />";

$atom->setDatetime(2010, 2,14,15,00,59);
echo $atom->getFormated()."<br />";

?>

Nachtrag:
Wenn sich jemand interessiert, der ihn auch testen wollte, dann fände ich das nett, da man selbst als Entwickler irgendwann den Wald vor lauter Bäumen nicht mehr sieht.
Da kann ich mitmachen
 
Zuletzt bearbeitet:
Du hast mich so eben auf die Idee gebracht, dass ich beide Möglichkeiten mit einer Methode lösen kann, denn den Zeitstempel übergebe ich doch als Zahlenwert und die einzelnen Werte kann ich als Array übergeben. Ich finde deinen Ansatz gut, aber da ich momentan nicht dazu geneigt bin meinen Generator derart zu erweitern, denke ich, dass es auch erstmal so gehen wird. Danke dir und ich werde versuchen das Projekt heute abzuschließen, dementsprechend dürfte es in ein paar Stunden verfügbar sein.

PS: Dateien können jetzt hier runtergeladen werden.
 
Zuletzt bearbeitet:
Zurück