Iteration durch JTable Extensions

  • cryptonit
  • Autor
  • Neues Mitglied
  • Neues Mitglied
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:
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.

Mehr
12 März 2010 22:00 #25188 von Tribal6
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

Tue das, was du kannst, mit dem was du hast, da wo du bist.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
13 März 2010 09:09 #25193 von Tribal6
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.

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
  • Neues Mitglied
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 :D

lg
cryptonit

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
15 März 2010 20:39 #25228 von Tribal6
Tribal6 antwortete auf Re: Iteration durch JTable Extensions
n'Abend

...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: Tribal6RePaoDragonlordChris Hoefligerpascaleadiheutschi.ch
Powered by Kunena Forum

Joomla! Verband Schweiz - Mitglied werden