Klassenhierarchie der Warenkorb-Preisregeln

9

Die Klasse Mage_SalesRule_Model_Validator hat ein Objekt von salesrule/rule_collection , und dieses Objekt ruft eine Funktion validate der Klasse Mage_SalesRule_Model_Rule_Condition_Product_Found auf, was ich nicht verstanden habe ist, wie das Objekt von salesrule/rule_collection mit der Fund-Klasse zusammenhängt. und wenn wir dieser Klasse irgendeine andere Funktion hinzufügen und versuchen, darauf zuzugreifen, wird eine Exception Undefined Function geworfen, ich möchte nur verstehen, was hinter den Kulissen passiert

Mage_SalesRule_Model_Rule_Condition_Product_Found erweitert die Klasse Mage_SalesRule_Model_Rule_Condition_Product_Combine , aber ab process Funktion der Mage_SalesRule_Model_Validator ruft auf, ruft die Funktion validate des Objektaufrufs Found class Mage_SalesRule_Model_Validator auf process

auf %Vor%

Und die Funktion process von Mage_SalesRule_Model_Validator , die die Funktion validate von Found class

aufruft %Vor%

Und die Funktion validate von Found class

%Vor%

Nun, was ich nicht verstanden habe ist, wenn ich irgendeine andere Funktion in Found class schreibe, lass es public function Foo() sein und versuche es von process function der Klasse Validator like

aufzurufen %Vor%

Es wird eine Exception Undefinierte Funktion ausgelöst Ich möchte nur den Grund wissen, warum ich keine Funktion in Found klasse schreiben kann und wie process aufrufen kann Danke

    
Ahmed 28.01.2014, 04:45
quelle

1 Antwort

2

Die Kernentwickler von Magento verwenden manchmal gerne zusätzliche Abstraktionen, die das Sehen etwas schwieriger machen. Warum? vielleicht beabsichtigten sie, diesen Abschnitt weiter zu entwickeln, vielleicht dachten sie, es würde es noch einfacher machen, sie außer Kraft zu setzen, eine Sache ist sicher, dass sie nicht an die Kosten der Komplexität gedacht haben.

Das gesamte Salesrule-Modul ist in viele Unterklassen unterteilt, von denen jede einzelne Klasse ein einzigartiges Stück Logik enthält. Die Kernlogik liegt tatsächlich in der Hauptdatei, die Sie sich angesehen haben: Mage_SalesRule_Model_Validator innerhalb der Methode process () .

Die Zeile, auf die Sie sich beziehen, ist 294 im Code, der sich innerhalb einer Schleife aller Regeln befindet, die auf den spezifischen Angebotsartikel angewendet werden (ein Angebotsartikel ist im Wesentlichen ein Produkt, das zum Einkaufswagen hinzugefügt und in den zusätzlichen Bereich konvertiert wurde) Metadaten).

%Vor%

Sie verwenden also dieselbe Strategie wie bei den Produkt- und Produkttypen. Sie haben eine Regel als allgemeines Modell und eine Reihe von Geschwisterklassen, die jeweils eine eindeutige Logik haben. Die Unterklassen zum Suchen / Kombinieren / Unterselektionieren einer Regel (die die Logik von UND / ODER- und Kombinationsregeln mit Prioritäten erleichtern). Hier ist der Kicker: Eine -Regel in Magento wurde zu einem eigenen Modul abstrahiert. Schau dir das Modul Mage_Rule an - dort findest du wahrscheinlich alle fehlenden Teile.

Ich hoffe, das hilft ein bisschen.

    
Ron 26.03.2014 17:00
quelle

Tags und Links