Ich denke, das ist eine sehr gute Frage, die damit zusammenhängt, wie Magento Klassen lädt.
Es gibt keine gute Möglichkeit, dies zu beheben, ohne die Magento-Dateien zu ändern.
Das Hauptproblem liegt also in lib / Varien / Autoload.php
public function autoload($class)
{
if ($this->_collectClasses) {
$this->_arrLoadedClasses[self::$_scope][] = $class;
}
if ($this->_isIncludePathDefined) {
$classFile = COMPILER_INCLUDE_PATH . DIRECTORY_SEPARATOR . $class;
} else {
$classFile = str_replace(' ', DIRECTORY_SEPARATOR, ucwords(str_replace('_', ' ', $class)));
}
$classFile.= '.php';
return include $classFile;
}
Varien_Autoload::autoload
Diese Methode kann nur Klassen laden, die den "Pear-Namenskonventionen" folgen Mage_Core_Model_Config
.
Aber wenn Namespaces verwendet werden, $class
wird enthalten Mage\\Core\\Model\\Config
.
So können wir ein weiteres Problem mit dem Prüf- und Behebungs-Namespace hinzufügen
public function autoload($class)
{
if ($this->_collectClasses) {
$this->_arrLoadedClasses[self::$_scope][] = $class;
}
if ($this->_isIncludePathDefined) {
$classFile = COMPILER_INCLUDE_PATH . DIRECTORY_SEPARATOR . $class;
} else if (strpos($class, "\\") !== false) {
$classFile = str_replace("\\", DIRECTORY_SEPARATOR, $class);
} else {
$classFile = str_replace(' ', DIRECTORY_SEPARATOR, ucwords(str_replace('_', ' ', $class)));
}
$classFile.= '.php';
return include $classFile;
}
Jetzt können Sie Bibliotheken verwenden, die Namespaces verwenden.
Außerdem finden Sie hier eine Liste mit Codeänderungen, um Namespaces in Magento zu verwenden.
Versuchen Sie diesen Ansatz, ich war in der Lage, zwei separate Datenbanken auf einzelne Magento-Setup zu verwenden.
Führen Sie dazu die folgenden Schritte aus.
im
app/etc/modules
in
app/code/local
und sicher sein , die Datenbank Details hier unten aktualisierenWenn Ihre Konfiguration fertig ist, rufen Sie die folgende Verbindungszeichenfolge auf, um auf die Datenbank zuzugreifen
quelle