Iteration durch JTable Extensions
- cryptonit
-
Autor
- Neues Mitglied
-
Weniger
Mehr
12 März 2010 15:57 #25176
von cryptonit
Iteration durch JTable Extensions wurde erstellt von cryptonit
Hallo miteinander
Ich frage mich, wie ich durch eine JTable- Extension iterieren kann. Gegeben ist also eine Klasse TableSowieso, welche von JTable ableitet. Wie ich nun mit $tableSowiesoObject->load($myID) einen einzelnen Record auslesen kann, ist mir klar. Ich hätte nur gerne etwas in dieser Art:
Gibts da was? Ich finde diesen Objektorientieren Aufbau nämlich ganz schön und würde ihn gerne weiter verwenden und nicht jedesmal im Model drin ne query schreiben. Ich hoffe ihr versteht mich...
lg und vielen Dank für eure Hilfe/Tipps
cryptonit
Ich frage mich, wie ich durch eine JTable- Extension iterieren kann. Gegeben ist also eine Klasse TableSowieso, welche von JTable ableitet. Wie ich nun mit $tableSowiesoObject->load($myID) einen einzelnen Record auslesen kann, ist mir klar. Ich hätte nur gerne etwas in dieser Art:
Code:
foreach($tableSowiesoObject->all() as $record)
Gibts da was? Ich finde diesen Objektorientieren Aufbau nämlich ganz schön und würde ihn gerne weiter verwenden und nicht jedesmal im Model drin ne query schreiben. Ich hoffe ihr versteht mich...
lg und vielen Dank für eure Hilfe/Tipps
cryptonit
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Tribal6
-
- Offline
-
12 März 2010 22:00 #25188
von Tribal6
Tue das, was du kannst, mit dem was du hast, da wo du bist.
Tribal6 antwortete auf Re: Iteration durch JTable Extensions
Hi du und willkommen hier
Die JTable-Klasse wurde als sogenanntes 'Active Record Pattern' implementiert:
"Ein Objekt repräsentiert genau eine Tabellenzeile und fügt dem Objekt dabei noch zusätzliche Domänen-Logik hinzu".
Da müsstest du dir eine Iterator-Klasse bauen, die die JTable-Objekte lädt und zur Laufzeit 'verwaltet'.
Mögliche Suchbegriffe in der Suchmaschine deines Vertrauens wären also 'Active Record Iterator PHP'
(oder so ähnlich).
Falls in deiner PHP-Version die SPL verfügbar ist (und auf den Zielsystemen deiner Erweiterung) hat es dort auch einige Iteratoren-Klassen:
--ALTER LINK WURDE ENTFERNT--
Mir stellt sich dabei aber noch die Frage, mit wievielen Tabellenzeilen da ungefähr zu rechnen ist, denn je nachdem kann das eine beträchtliche Anzahl an Objekten bedeuten, die ja schliesslich Resourcen benötigen, denn es wird ja pro ausgelesene Zeile jeweils ein JTable-Objekt erzeugt.
Ein intressantes Thema ist es auf jeden Fall, und lohnenswert dem nachzugehen.
(bei dem Wetter zur Zeit sowieso
)
Cheers
Roger
Die JTable-Klasse wurde als sogenanntes 'Active Record Pattern' implementiert:
"Ein Objekt repräsentiert genau eine Tabellenzeile und fügt dem Objekt dabei noch zusätzliche Domänen-Logik hinzu".
Da müsstest du dir eine Iterator-Klasse bauen, die die JTable-Objekte lädt und zur Laufzeit 'verwaltet'.
Mögliche Suchbegriffe in der Suchmaschine deines Vertrauens wären also 'Active Record Iterator PHP'
(oder so ähnlich).
Falls in deiner PHP-Version die SPL verfügbar ist (und auf den Zielsystemen deiner Erweiterung) hat es dort auch einige Iteratoren-Klassen:
--ALTER LINK WURDE ENTFERNT--
Mir stellt sich dabei aber noch die Frage, mit wievielen Tabellenzeilen da ungefähr zu rechnen ist, denn je nachdem kann das eine beträchtliche Anzahl an Objekten bedeuten, die ja schliesslich Resourcen benötigen, denn es wird ja pro ausgelesene Zeile jeweils ein JTable-Objekt erzeugt.
Ein intressantes Thema ist es auf jeden Fall, und lohnenswert dem nachzugehen.
(bei dem Wetter zur Zeit sowieso
Cheers
Roger
Tue das, was du kannst, mit dem was du hast, da wo du bist.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Tribal6
-
- Offline
-
13 März 2010 09:09 #25193
von Tribal6
Tue das, was du kannst, mit dem was du hast, da wo du bist.
Tribal6 antwortete auf Re: Iteration durch JTable Extensions
...ein möglicher Ansatzpunkt wäre ev. auch dieser, dass du die Tabelle erst als assoziatives Array in deine Iterator-Klasse lädst (oder der relevante Teil davon), jedem Datensatz noch die Eigenschaft 'status' gibst, mit den möglichen Werten 'clear', 'delete', 'create' und 'change'.
Und erst in den entsprechenden Funktionen, um die Zeilen zu ändern, löschen oder erstellen, erstellst du dann die konkreten JTable-Objekte. Auf diese Weise liesse sich einiges an Overhead vermeiden, und du könntest so ev. eher einen der SPL-Iteratoren verwenden/erweitern.
Und erst in den entsprechenden Funktionen, um die Zeilen zu ändern, löschen oder erstellen, erstellst du dann die konkreten JTable-Objekte. Auf diese Weise liesse sich einiges an Overhead vermeiden, und du könntest so ev. eher einen der SPL-Iteratoren verwenden/erweitern.
Tue das, was du kannst, mit dem was du hast, da wo du bist.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- cryptonit
-
Autor
- Neues Mitglied
-
Weniger
Mehr
15 März 2010 13:53 #25219
von cryptonit
cryptonit antwortete auf Re: Iteration durch JTable Extensions
Hi Tribal6
Danke für deine Info!
Um nicht völlig von der Idee des Erfinders abzukommen, wäre eine Erweiterung um die Methoden next, previous bzw. hasNext, hasPrevious auch denkbar. Da liesse sich dann in Zusammenarbeit mit einer while- Schlaufe schon einiges machen
. Ich werde mir das mal ansehen.
Da ich noch sehr neu in der Joomla- Materie bin, möchte ich ungern gleich das ganze System umkrämpeln
lg
cryptonit
Danke für deine Info!
Um nicht völlig von der Idee des Erfinders abzukommen, wäre eine Erweiterung um die Methoden next, previous bzw. hasNext, hasPrevious auch denkbar. Da liesse sich dann in Zusammenarbeit mit einer while- Schlaufe schon einiges machen
Da ich noch sehr neu in der Joomla- Materie bin, möchte ich ungern gleich das ganze System umkrämpeln

lg
cryptonit
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Tribal6
-
- Offline
-
15 März 2010 20:39 #25228
von Tribal6
Tue das, was du kannst, mit dem was du hast, da wo du bist.
Tribal6 antwortete auf Re: Iteration durch JTable Extensions
n'Abend
Wie gesagt, ist ja nur eine einzige Tabellenzeile jeweils in einem JTable-Objekt vorhanden, also ist da mit einem next() eigentlich auch nicht viel zu holen.
Und vom Erweitern/Vererben würde ich dir auch abraten, denn beim nächsten Update ist da vielleicht wieder alles futsch, und je nachdem läuft dann nicht mal mehr deine Erweiterung.
Wie schon gesagt, eine saubere Lösung wäre da eine Iterator-Klasse, die auf Objekt-Komposition aufbaut. Und wenn du die dann noch als als System-Plugin realisierst, steht diese Klasse nicht nur einer spezifischen Erweiterung in einer Joomla-Installation zur Verfügung, sondern kann in mehreren Joomla's, systemweit, in diversen Extensions eingesetzt werden (Stichwort "wiederverwertbarkeit von Code").
Aber ist nur meine Meinung, du hast ja schliesslich gefragt
Cheers
Roger
...wäre eine Erweiterung um die Methoden next, previous bzw. hasNext, hasPrevious auch denkbar
Wie gesagt, ist ja nur eine einzige Tabellenzeile jeweils in einem JTable-Objekt vorhanden, also ist da mit einem next() eigentlich auch nicht viel zu holen.
Und vom Erweitern/Vererben würde ich dir auch abraten, denn beim nächsten Update ist da vielleicht wieder alles futsch, und je nachdem läuft dann nicht mal mehr deine Erweiterung.
Wie schon gesagt, eine saubere Lösung wäre da eine Iterator-Klasse, die auf Objekt-Komposition aufbaut. Und wenn du die dann noch als als System-Plugin realisierst, steht diese Klasse nicht nur einer spezifischen Erweiterung in einer Joomla-Installation zur Verfügung, sondern kann in mehreren Joomla's, systemweit, in diversen Extensions eingesetzt werden (Stichwort "wiederverwertbarkeit von Code").
Aber ist nur meine Meinung, du hast ja schliesslich gefragt
Cheers
Roger
Tue das, was du kannst, mit dem was du hast, da wo du bist.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Moderatoren: Tribal6, RePao, Dragonlord, Chris Hoefliger, pascale, adiheutschi.ch