Я думаю, що це дуже гарне питання, яке пов'язане з тим, як Magento завантажує заняття.
Немає хорошого способу це виправити без зміни файлів Magento.
Тому основна проблема полягає у 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
- цей метод може завантажувати лише класи, які відповідають "Умовам грушного іменування" - Mage_Core_Model_Config
.
Але якщо використовуються простори імен, $class
вони містять Mage\\Core\\Model\\Config
.
Таким чином, ми можемо додати ще одну проблему з перевіркою та виправленням імені
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;
}
Тепер ви можете використовувати бібліотеки, які використовують простори імен.
Крім того, тут ви знайдете список змін коду для використання просторів імен у Magento.