Schönen Tag wünsche ich.
Ich habe gerade folgende Problemstellung und bin mir gerade nicht wirklich schlüssig, wie ich das am geschicktesten angehe.
Ich werde eine Art Activity-Stream bauen. Im System gibt es unterschiedliche Aktivitäten (Gästebucheintrag, Foto gepostet, Shoutboxeintrag und so weiter). Da ich möglichst flexibel sein möchte, sieht meine Datenbankstruktur in etwa so aus:
activity_log
id | user | type | time
activity_data
id | activity | key | value
Weiß auch nicht, ob es evtl. sinnvoller wäre, das zu denormalisieren zwecks Performance und die Daten in die activity_log-Tabelle zu schreiben. Wobei die dann ziemlich "fett" wird.
Nun muss je nach Typ der Aktivität natürlich ein anderes Ergebnis gerendert werden.
Gehen wir davon aus, dass ich eine Klasse Activity_Stream habe. Diese holt die Aktivitäten aus der Datenbank und ist auch für das Rendern der einzelnen Elemente verantwortlich.
Nun gibt es zwei Möglichkeiten: Jeder Aktivitätstyp hat eine eigene Klasse oder es gibt eine große Klasse fürs Rendering.
oder
und dementsprechend der Aufruf:
oder (falls die Syntax überhaupt so funktioniert
)
In aller Kürze: Ich suche ein Konzept, eine Liste von Datenbankeinträgen anhand von einer bestimmten Datenbankspalte zu behandeln und auszugeben. Wie würdet ihr das lösen?
Ich habe gerade folgende Problemstellung und bin mir gerade nicht wirklich schlüssig, wie ich das am geschicktesten angehe.
Ich werde eine Art Activity-Stream bauen. Im System gibt es unterschiedliche Aktivitäten (Gästebucheintrag, Foto gepostet, Shoutboxeintrag und so weiter). Da ich möglichst flexibel sein möchte, sieht meine Datenbankstruktur in etwa so aus:
activity_log
activity_data
Weiß auch nicht, ob es evtl. sinnvoller wäre, das zu denormalisieren zwecks Performance und die Daten in die activity_log-Tabelle zu schreiben. Wobei die dann ziemlich "fett" wird.
Nun muss je nach Typ der Aktivität natürlich ein anderes Ergebnis gerendert werden.
Gehen wir davon aus, dass ich eine Klasse Activity_Stream habe. Diese holt die Aktivitäten aus der Datenbank und ist auch für das Rendern der einzelnen Elemente verantwortlich.
Nun gibt es zwei Möglichkeiten: Jeder Aktivitätstyp hat eine eigene Klasse oder es gibt eine große Klasse fürs Rendering.
PHP:
class Activity_GalleryPhoto extends Activity {
public function render() {}
}
oder
PHP:
class Activity_Renderers {
public function renderGalleryPhoto() {}
}
und dementsprechend der Aufruf:
PHP:
$activity = get_activity_object($record); //Pseudocode
oder (falls die Syntax überhaupt so funktioniert
)
PHP:
$activity = Activity_Renderers::render{$record['type']}();
In aller Kürze: Ich suche ein Konzept, eine Liste von Datenbankeinträgen anhand von einer bestimmten Datenbankspalte zu behandeln und auszugeben. Wie würdet ihr das lösen?