回答:
これは、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
。
したがって、もう1つチェックを追加して、名前空間の問題を修正できます。
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セットアップで2つの個別のデータベースを使用することができました。
そのためには、構成を作成する必要があります。以下の手順に従ってください。
に app/etc/modules
<?xml version="1.0"?>
<config>
<modules>
<Deph_Externaldb>
<active>true</active>
<codePool>local</codePool>
</Deph_Externaldb>
</modules>
</config>
でapp/code/local
、ここで以下のデータベースの詳細を更新してください
<?xml version="1.0"?>
<config>
<modules>
<Deph_Externaldb>
<version>0.1.0</version>
</Deph_Externaldb>
</modules>
<global>
<resources>
<externaldb_write>
<connection>
<use>externaldb_database</use>
</connection>
</externaldb_write>
<externaldb_read>
<connection>
<use>externaldb_database</use>
</connection>
</externaldb_read>
<externaldb_setup>
<connection>
<use>core_setup</use>
</connection>
</externaldb_setup>
<externaldb_database>
<connection>
<host><![CDATA[localhost]]></host>
<username><![CDATA[db_username]]></username>
<password><![CDATA[db_password]]></password>
<dbname><![CDATA[db_name]]></dbname>
<model>mysql4</model>
<type>pdo_mysql</type>
<active>1</active>
</connection>
</externaldb_database>
</resources>
</global>
</config>
設定の準備ができたら、以下の接続文字列を使用してdbにアクセスします
<?php
$resource = Mage::getSingleton('core/resource');
$conn = $resource->getConnection('externaldb_read');
$results = $conn->query('SELECT * FROM tblName');
print_r($results)