Hallöchen, für ein Modul was ich gerade baue, muss ich auf allen Checkout Seiten den Warenkorb die Artikelmenge prüfen. Ich denke, dass ich da in der CheckoutControl.inc.php -> check_stock() richtig bin. Ich möchte die Klasse nun wie viele andere auch überladen, aber es wird immer die check_stock() aus der original Datei geladen. Meine Datei ist auf alle Fälle eingebunden, da wenn ich nen die(); an den Anfang der Datei schreibe, dann stoppt das script. /GXModules/Thrownatur/ProductLimits/Shop/Overloads/CheckoutControl/ProductLimitCheckoutControl.inc.php Code: <?php /* -------------------------------------------------------------- ProductLimitCheckoutControl --------------------------------------------------------------------------------------- */ class ProductLimitCheckoutControl extends ProductLimitCheckoutControl_parent { public function check_stock($p_force = false) { die('Nu aber'); return true; } } [code] Kann man die Datei Klasse [B]CheckoutControl [/B]nicht überladen, oder sehe ich einfach nur den Fehler nicht? Danke!
Versuch das mal: PHP: class ProductLimitCheckoutControl extends ProductLimitCheckoutControl_parent{ public function check_stock($p_force = false) { parent::check_stock($p_force = false); //bof dein Code }}
Es gibt eine Ausnahme für Overloads: Klassen, die extended werden, können nicht überladen werden. Lösung ist dann den Overload für die Child-Klasse(n) zu machen. Also in dem Fall CheckoutShippingContentControl, CheckoutPaymentContentControl, CheckoutConfirmationContentControl, CheckoutProcessProcess Und wie Developer schrieb, nicht vergessen den parent::-Aufruf zu machen, damit die Überladungskette dann nicht bei dir unterbrochen wird. Nur beim übergebenen Parameter $force und nicht $force = false, ansonsten wird der Wert immer auf false gesetzt.
Danke für Deine Antwort, ja das habe ich normal drin, ich hatte den Code nur hier rausgenommen, damit der Codeblock nicht zu lang wird. alles klar, vielen Dank, dann mache ichs da.