Я думаю, что это очень хороший вопрос, связанный с тем, как 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
- этот метод может загружать только те классы, которые следуют «соглашениям об именовании Pear» 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.
Попробуйте этот подход, я смог использовать две отдельные базы данных на одной установке magento.
для этого вам нужно будет создать конфигурацию, следуя инструкциям ниже.
в
app/etc/modules
в
app/code/local
и обязательно обновить данные базы данных ниже здесьваш конфиг готов, вы звоните, используйте следующую строку подключения для доступа к БД
источник