Penso che questa sia un'ottima domanda, collegata al modo in cui Magento carica le classi.
Non esiste un buon modo per risolverlo senza modificare i file Magento.
Quindi il problema principale è 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
- questo metodo può caricare solo classi che seguono "Convenzioni di denominazione di Pear" - Mage_Core_Model_Config
.
Ma se vengono utilizzati spazi dei nomi $class
conterrà Mage\\Core\\Model\\Config
.
Quindi possiamo aggiungere un altro controllo e risolvere il problema dello spazio dei nomi
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;
}
Ora puoi usare le librerie che usano gli spazi dei nomi.
Inoltre qui troverai l'elenco delle modifiche al codice per utilizzare gli spazi dei nomi in Magento.