DatabaseObjectList

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Die DatabaseObjectList-Klasse wird verwendet, um aus mehreren gedachten Datenbankobjekten mehrere php-Objekte zu generieren.

    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

    1. <?php
    2. namespace shop\data\product;
    3. use wcf\data\DatabaseObjectList;
    4. /**
    5. * Represents a list of products.
    6. *
    7. * @authorMarcel Beckers
    8. * @licenseLGPL
    9. * @packagede.yourecom.example
    10. */
    11. class ProductList extends DatabaseObjectList {
    12. /**
    13. * @see wcf\data\DatabaseObjectList::$className
    14. */
    15. public $className = 'shop\data\product\Product';
    16. }
    Display All
    In Zeile 2 legen wir fest, wo der Autoloader des WSC die ProductList.php auffinden kann.
    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.

    PHP Source Code

    1. $productList = new ProductList();

    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,754 times viewed

Comments 1

  • CCFF -

    Satzbau und Rechtschreibung korrigiert. Außerdem ein paar Sätze zwecks besserer Lesbarkeit umgestellt. Bitte prüfen.