Listing 4
function phpmAutoload($sClass) { $sClass = basename($sClass); $sBasePath = getShopBasePath(); $sClass = strtolower($sClass); $aClassDirs = array( $sBasePath . 'modules/phpm_articles/', $sBasePath . 'modules/phpm_location/core/', $sBasePath . 'modules/phpm_location/controller/', $sBasePath . 'modules/phpm_location/admin/' ); foreach ($aClassDirs as $sDir) { $sFilename = $sDir . strtolower($sClass) . '.php'; if (file_exists($sFilename)) { include $sFilename; return; } } } spl_autoload_register("phpmAutoload");
Klassenerweiterungen
Im Folgenden erstellen wir gemeinsam ein Modul, mit dessen Hilfe die verbleibenden Tage bis Weihnachten neben jedem Artikel im Shop dargestellt werden sollen. Dazu erweitern wir die oxArticle-Klasse und fügen eine Zeile in die entsprechende Template-Datei des Frontends ein. Hier sei erwähnt, dass sich die meisten Controller- und Model-Klassen im OXID eShop erweitern lassen.
Dabei geht das System intelligent vor: Es stellt sicher, dass die PHP-Klassenvererbung auch dann funktioniert, wenn mehr als ein Modul eine bestimmte Klasse erweitern möchte. Um das zu erreichen, werden alle Objekte der Applikation via oxNew() (in /core/oxutilsobject.php) instantiiert.
Auf diese Weise werden transparente Klassen erzeugt, die quasi die Vererbung zwischen Eltern- und Kind-Klassen übernehmen. Alles, was dazu getan werden muss, ist, neue Klassen auf die folgende Weise zu erben (Listing 5).
Listing 5
class xmasArticle extends xmasArticle_parent { public function getDaysLeft() { $time = mktime(0, 0, 0, 12, 25, 2011, 1) - time(); $days = floor($time/86400); return $days; } }
Weiter mit: Teil 7
Alle Teile: Teil 1, Teil 2, Teil 3, Teil 4, Teil 5, Teil 6, Teil 7, Teil 8, Teil 9, Teil 10