Table Of Contents
Erklärung
Die DatabaseObject-Klasse repräsentiert immer ein Objekt, die DatabaseObjectList-Klasse hingegen mehrere. Die DatabaseObjectList-Klasse baut von ihrer Natur auf die DatabaseObject-Klasse auf. Das bedeutet, dass alle Funktionen, die wir in unserer DatabaseObject-Klasse zur Verfügung haben, auch bei den einzelnen Ergebnissen der DatabaseObjectList-Klasse zur Verfügung haben. Stellen wir uns nun vor, dass wir einen Shop erstellen möchten, käme eine DatabaseObjectList-Klasse immer dann zum Einsatz, wenn mehrere Produkte angezeigt werden sollen (Voraussetzung wäre, dass die einzelnen Produkte als DatabaseObject realisiert worden sind). Beispielsweise innerhalb einer Kategorie, bei Dashboard-Boxen oder bei einer Profil-Angabe u.v.m.
Die DatabaseObjectList-Klasse auf GitHub
Die DatabaseObjectList-Klasse findet sich auf GitHub unter github.com/WoltLab/WCF/blob/ma…abaseObjectList.class.php
Aufbau der Datei
Der Aufbau unserer erbenden DatabaseObjectList-Klasse ist relativ simpel gehalten
PHP Source Code
- <?php
- namespace shop\data\product;
- use wcf\data\DatabaseObjectList;
- /**
- * Represents a list of products.
- *
- * @authorMarcel Beckers
- * @licenseLGPL
- * @packagede.yourecom.example
- */
- class ProductList extends DatabaseObjectList {
- /**
- * @see wcf\data\DatabaseObjectList::$className
- */
- public $className = 'shop\data\product\Product';
- }
In Zeile 3 "binden" wir die DatabaseObjectList-Klasse ein.
In Zeile 5 bis 11 verfassen wir den Klassenkommentar.
In Zeile 13 geben wir den Namen der Klasse an, der gleichzeitig mit dem Namen der Datei übereinstimmen muss. In diesem Fall heißt die Datei "ProductList.class.php". Gleichzeitig erben wir von der DatabaseObjectList-Klasse.
In Zeile 17 geben wir den Namespace und den Klassennamen an, damit die DatabaseObjectList weiß, wo unsere Vererbung der DatabaseObject-Klasse zu finden ist.
Aufruf
An dieser Stelle hätte unsere Ableitung der DatabaseObjectList-Klasse den kleinstmöglichen Nenner um lauffähig zu sein. Optionale Parameter innerhalb der __construct-Funktion gibt es nicht. Ließen sich aber optional realisieren.
Weitere Klassenvariabeln und Funktionen
Die DatabaseObjectList-Klasse bietet einige sehr nützliche optionale Variablen und Funktionen an, die man setzen bzw. überschreiben kann.
Klassenvariablen
$decoratorClassName
gibt den Pfad zum Dekorierer (auch Decorator) eines Objektes an.$objects
enthält alle Ergebnisse nach der Initialisierung unserer erbenden DatabaseObjectList-Klasse.$objectIDs
enthält von allen Ergebnisse nach der Initialisierung unserer erbenden DatabaseObjectList-Klasse die IDs.$sqlOffset
gibt die Seitenanzahl an, auf der man sich befindet (Stichwort Blätterfunktionen / Pager).$sqlLimit
gibt die maximale Anzahl an Ergebnissen an, die die Ableitung der DatabaseObjectList-Klasse haben soll.$sqlOrderBy
gibt das Feld an, auf das sortiert werden soll.$sqlSelects
gibt weitere Felder an, die während der SELECT-Abfrage mit abgefragt werden sollen.$sqlConditionJoins
enthält bei Bedarf den „JOIN“-Teil einer Abfrage (bezogen auf die Funktionen countObjects und readObjectIDs).$sqlJoins
enthält bei Bedarf den „JOIN“-Teil einer Abfrage (bezogen auf die Funktion readObjects).$useQualifiedShorthand
de- oder aktiviert die automatische Nutzung der Kurzschrift für SELECT-Abfragen (Default ist true).$conditionBuilder
beinhaltet eine Initialisierung der PreparedStatementConditionBuilder Klasse, für die einfache Verwaltung des WHERE-Teils.
Funktionen
- Die Funktion
countObjects()
gibt die Anzahl der möglichen Ergebnisse zurück. - Die Funktion
readObjectIDs()
liest die Objekt ID´s aller Ergebnisse in die Variable$objectIDs
ein. - Die Funktion
readObjects()
liest alle Ergebnisse als DatabaseObject Objekt in die Variable$objects
ein. - Die Funktion
getObjectIDs()
gibt die Variable$objectIDs
zurück. - Mit der Funktion
setObjectIDs(array($array))
kann man die Variable$objectIDs
manuell setzen. - Die Funktion
getObjects()
gibt die Variable$objects
zurück. - Die Funktion
getConditionBuilder()
gibt die Variable$conditionBuilder
zurück.
Ihr habt Fragen oder Anregungen? Lob oder Kritik? Lasst es mich doch durch einen Kommentar von euch wissen!
8,755 times viewed
CCFF -
Satzbau und Rechtschreibung korrigiert. Außerdem ein paar Sätze zwecks besserer Lesbarkeit umgestellt. Bitte prüfen.