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
Und die Funktion process
von Mage_SalesRule_Model_Validator
, die die Funktion validate
von Found
class
Und die Funktion validate
von Found
class
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
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
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.
Tags und Links php magento magento-1.7