Du bist ein Objekt, hex hex

Ich bin gerade beim Arbeiten über eine nützliche Funktionalität des Sapphire Frameworks gestolpert, die ich einmal kurz vorstellen möchte. Man kann durch einfache Konfiguration Rückgabewerte von Methoden oder aber Attribute eines Objekts zu einem Objekt casten.

Im Forum-Modul wird davon bei der Verarbeitung von Datumsangaben Gebrauch gemacht. Jeder Forenpost der upgedatet wurde hat ja ein Updatedatum, welches kein Attribut ist, sondern durch die Methode Updated() ermittelt wird. Um dieses im Frontend angemessen formatiert auszugeben, müsste man es durch eine komplizierte Stringverarbeitungsmethode im Controller laufen lassen, sodass das Datum in ein leserliches Format kommt. Da die SilverStripe Klasse SS_DateTime aber schon jede Menge Manipulationsmethoden für Datumsangaben hat, castet man den Rückgabewert der Methode Updated() zu einem Objekt dieser Klasse. Wie das geht:

static $casting = array(
           "Updated" => "SS_Datetime"
);

Diese Anweisung gehört natürlich in die Klasse Post, die von DataObject abgeleitet ist. Will man nun das Updatedatum im Frontend ausgeben, kann man das mit $Updated.Nice24 so tun, dass wir Europäer es auch lesen können.

Tags: