Das verwirrt mich ein bisschen. Ich frage mich, warum ich es vorher nicht bemerkt habe. Als ich nach der Mage_Sales
Helferdefinition des Kernmoduls suchte, war ich überrascht, dass ich dort keine Helferdefinition finden konnte. Das verwirrt mich sehr. Daher habe ich diesen Code ausprobiert
print_r(get_class(Mage::helper('sales')));
und es gab mir dieses Ergebnis
Mage_Sales_Helper_Data
Wo ist dann der sales
Alias für Mage_Sales_Helper_Data
ist in Magento definiert. Mit anderen Worten, wo soll ich dieses Code-Snippet finden?
<global>
<helpers>
<sales>
<class>Mage_Sales_Helper</class>
</sales>
</helpers>
</global>
Ich habe auch alle XML-Dateien überprüft, die für Mage_Sales
das Modul etc verfügbar sind . Keiner von ihnen enthält eine Helferdefinition. Also, wie Magento sales
Alias der Helferklasse zugewiesen hat Mage_Sales_Helper_Data
.
Bitte erleuchten Sie mich mit Ihren wertvollen Gedanken
quelle
getGroupedClassName()
. Jetzt merke ich .. Ich war so nah an der Antwort !!. Dies löschte meinen Zweifel vollständig aus. Jetzt kann ich ruhig schlafen. Also +1 für meine Gedanken sauber machen :)Mit Hilfe von David oben Antwort würde Hope David nichts dagegen haben.
Ich versuche es genauer zu erklären
Beginnen Sie mit Mage.php und gehen Sie zum Funktionshelfer
ein)
$registryKey = '_helper/' . $name;
Ergebnis:
$registryKey = _helper/sales
b)
check now registry key exits ot not,if not then set a registry
variabeles wird
true when system is first times
für eine Sitzung:c)
$helperClass = self::getConfig()->getHelperClassName($name);
das heißtd) Dann setze Klasse
name is registry variable
eErgebnis:
may be proper class name Mage_Sales_Helper_Data
Geht jetzt zur Funktion getHelperClassName der Klasse Mage_Core_Model_Config
a) Diese Funktion Ruft die Hilfsklassen-Namenszeichenfolge $ name ab
Funktion erklären:
die Logik:
wird
true as $helperName=sales then set $helperName=sales/data
b)
return $this->getGroupedClassName('helper', $helperName);
Einzelheiten:
Jetzt gehe zur Funktion
getGroupedClassName('helper','sales/data',null)
** diese Funktionsaufgabe **
ein)
$classArr = explode('/', trim($classId));
Ergebnis:
explode helper name(sales/data by /) for getting classs name in array $classArr
b)
$class = !empty($classArr[1]) ? $classArr[1] : null;
Ergebnis:
as $classArr[1] is data then value of $class is data
c)
$config = $this->_xml->global->{$groupType.'s'}->{$group};
Einzelheiten:
get config setting then $config = $this->_xml->global->helpers->sales;
d)
$className = null;
Details :
set $className null
.e)
check rewrite class exits in config.xml files, check if class is rewrite then you can easly get
Code: if (isset ($ config-> rewrite -> $ class)) {Ergebnis:if (isset($config->rewrite->data)) {
f
)for default magento ,it false to goto else
überspringen if ($ config-> deprecatedNode) {
G)
if (empty($className)) {
Ergebnis:
h
)if (!empty($config)) {
Ergebnis
i)
if (empty($className)) {
Ergebnis:as $className is till null then this code is true
j) Klassenergebnis machen
$className = 'mage_'.$group.'_'.$groupType;
:
k)
Ergebnis:
l) ** in Großbuchstaben machen
$className = uc_words($className)
; Jetzt return class return $ className; Das ist Mage_Sales_Helper_Data **Dank an
David Manners und Rajeev K Tomy
quelle