Magento。 構成ファイルをロードするプロセス

こんにちは、habrasociety。

これは私の最初の記事なので、厳密に判断しないでください。 ここ数年、Magentoをベースにしたオンラインストアを開発しています。 この間、私はこのプラットフォームの作業に関する多くの情報を蓄積してきましたが、それは私の頭の中に永久に保管することはできません。そこで、一連の記事で構成することにしました。

誰も気にしない、猫へようこそ。



Magentoベースのオンラインストアのページへのアクセスは、index.phpの処理から始まります。 このファイルでは、PHPバージョンを含む初期チェックが実行され、定数が宣言され、Mage基本クラスを持つMage.phpファイルが接続されます。 このクラスは多くの興味深いメソッドを実装します。これについては後続の記事で説明しますが、現時点ではメソッドに興味があります

実行、ストアの起動を担当。 構成ファイルのロード方法を理解するには、次の方法を検討してください。

self::$_app = new Mage_Core_Model_App(); if (isset($options['request'])) { self::$_app->setRequest($options['request']); } if (isset($options['response'])) { self::$_app->setResponse($options['response']); } self::$_events = new Varien_Event_Collection(); self::_setIsInstalled($options); self::_setConfigModel($options); self::$_app->run(array( 'scope_code' => $code, 'scope_type' => $type, 'options' => $options, ));
      
      





メソッドに新しいクラスMage_Core_Model_Appが作成され、それに対してrunメソッドが呼び出され、構成ファイルを初期ロードするためのメソッドが呼び出されることがわかります。



この方法を検討してください:

 public function run($params) { $options = isset($params['options']) ? $params['options'] : array(); $this->baseInit($options); Mage::register('application_params', $params); if ($this->_cache->processRequest()) { $this->getResponse()->sendResponse(); } else { $this->_initModules(); $this->loadAreaPart(Mage_Core_Model_App_Area::AREA_GLOBAL, Mage_Core_Model_App_Area::PART_EVENTS); if ($this->_config->isLocalConfigLoaded()) { $scopeCode = isset($params['scope_code']) ? $params['scope_code'] : ''; $scopeType = isset($params['scope_type']) ? $params['scope_type'] : 'store'; $this->_initCurrentStore($scopeCode, $scopeType); $this->_initRequest(); Mage_Core_Model_Resource_Setup::applyAllDataUpdates(); } $this->getFrontController()->dispatch(); } return $this; }
      
      







baseInitメソッドは、_configプロパティを初期化し、基本構成をロードします。 基本構成は_initBaseConfigメソッドにロードされ、その後、Mage_Core_Model_ConfigクラスからloadBaseメソッドが呼び出されます。

loadBaseメソッドは、ファイルapp / etc / local.xmlおよびapp / etc / config.xmlのデータを解析し、Mage_Core_Model_Configオブジェクトの_xmlプロパティに保存します。 これらのファイルには、オンラインストアのデータベースおよび基本設定へのアクセスが含まれています。

その後、モジュールの構成ファイルがロードされます。 _initModulesメソッドがこれを担当し、Mage_Core_Model_ConfigクラスからloadModulesメソッドを呼び出します。

モジュールの構成ファイルをダウンロードするには、まずapp / etc / modulesフォルダーからすべてのファイルのリストがロードされ、これらのファイルが解析されます。 _loadDeclaredModulesメソッドがこれを担当します。 loadModulesメソッドは、モジュールディレクトリのetcフォルダーから2種類のファイルのみを処理します。



それらをロードするには、loadModulesConfigurationメソッドが呼び出され、ファイル名(config.xmlおよびconfig.mysql4.xml)の配列が$ fileNameとして渡されます

画像

次に、すべてのアクティブモジュールのデータを解析して_xmlプロパティにロードします。

 $modules = $this->getNode('modules')->children(); foreach ($modules as $modName=>$module) { if ($module->is('active')) { if ($disableLocalModules && ('local' === (string)$module->codePool)) { continue; } if (!is_array($fileName)) { $fileName = array($fileName); } foreach ($fileName as $configFile) { $configFile = $this->getModuleDir('etc', $modName).DS.$configFile; if ($mergeModel->loadFile($configFile)) { $mergeToObject->extend($mergeModel, true); } } } }
      
      





local.xmlファイルを使用して、オンラインストアの基本構成に変更を加えることができます。

これで設定のダウンロードが完了し、切り替えたページのルーターに応じて、対応するプロセスが開始されます。



ご清聴ありがとうございました。喜んでご批判をお待ちしております。



All Articles