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.