Eu acho que essa é uma pergunta muito boa, que está relacionada à forma como o Magento carrega as classes.
Não há uma boa maneira de corrigir isso sem alterar os arquivos Magento.
Portanto, o principal problema está em 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
- este método pode carregar apenas classes que seguem "Convenções de nomenclatura Pear" - Mage_Core_Model_Config
.
Mas se os namespaces forem usados, $class
eles conterão Mage\\Core\\Model\\Config
.
Assim, podemos adicionar mais uma verificação e corrigir o problema do espaço para nome
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;
}
Agora você pode usar bibliotecas que usam espaços para nome.
Além disso aqui você vai encontrar uma lista alterações no código para namespaces uso em Magento.