Projekt

Allgemein

Profil

ClassOverloading

Mit dem Service Pack 1.1 bzw. der Release v2.0.7 führen wir das ClassOverloading in weite Teile des Shops ein. Damit können Code-Anpassungen an allen Klassen in z.B. includes/classes/ und includes/modules/ update-sicher vorgenommen werden.

Nehmen wir an, wir wollten die Klasse xtcPrice überladen. Hierfür muss im Vezeichnis user_classes/overloads ein Unterverzeichnis angelegt werden, dessen Name dem der zu überladenen Klasse entspricht, d.h. in diesem Fall ein Unterverzeichnis "xtcPrice".

In diesem Unterverzeichnis legen wir nun eine PHP-Datei an, die die Klassendefinition der erweiternden Klasse enthält, z.B. der Klasse "test1_xtcPrice". Der Name dieser PHP-Datei muss folgenden Aufbau haben: KLASSENNAME.inc.php, d.h. in diesem Beispiel "test1_xtcPrice.inc.php

Die Klasse "test1_xtcPrice" soll im Code dabei nicht direkt von der Klasse "xtcPrice" erben, sondern von der Klasse "test1_xtcPrice_parent". Hier muss also auf die Endung "_parent" geachtet werden. Die fertige Klassendefinition sieht somit wie folgt aus:

class test1_xtcPrice extends test1_xtcPrice_parent
{
    ...
}

Ein fertiges Code-Beispiel, mit der die Ausgabe der Funktion xtcPrice->xtcFormat() update-sicher manipuiliert wird, befindet sich im Verzeichnis user_classes/overloads/_samples/xtcPrice.

Mehrfaches Überladen derselben Klasse durch verschiedene Entwickler ist ebenfalls möglich. Ein Beispiel dafür befindet sich im Verzeichnis user_classes/overloads/_samples/FooterContentView. Hier liegen mehrere Klassen, die alle die FooterContentView nacheinander überladen, um die Ausgabe des Footers zu manipulieren.