Entwickler-Preview: Class-Overloading

08. November 2011

Im Forum haben wir letzte Woche eine Entwickler-Preview auf die Implementation des Class-Overloadings bereitgestellt. Es handelt sich hierbei wie gesagt um eine Entwickler-Version. Diese dient ausschließlich der Demonstration des kommenden Klassenmodels und ist auf keinen Fall für den produktiven Einsatz geeignet.

Mit dem kommenden Service Pack führen wir ein System zum Class-Overloading 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 wollen 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 also „test1_xtcPrice.inc.php“

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

class test1_xtcPrice extends test1_xtcPrice_parent {
    …
}

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

Mehrfaches Überladen der selben 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.

Die Einführung dieses Konzepts ist ein weiterer Schritt zur update-sicheren Modulentwicklung für den Shop. In den nächsten Schritten
werden wir weitere Bereiche des Shops an dieses Konzept anpassen, insbesondere die für die Frontend-Verwaltung, da diese für die meisten Modulentwickler die wichtigsten Bereiche sein dürften.