<?php
/**
* 設定を読み込むローダー・クラス
*
* PHP version 5
*
* @package    core
* @author     stk2k <stk2k@sazysoft.com>
* @copyright  2008 stk2k, sazysoft
*/

class ConfigLoader
{
	/*
	 * 設定を読み込む
	 */
	public static function loadConfig( String $virtual_path, String $config_type )
	{
		log_info( "system", "設定をロードします。", __FILE__, __LINE__ );

		// 設定プロバイダを作成
		$provider = Factory::createConfigProvider();

		// 設定値格納用オブジェクトを作成
		$config= array();

		// 設定ルートパス
		$root_webapp = ResourceLocator::getWebAppPath( s('config') );
		$root_system = ResourceLocator::getSystemPath( s('config') );

		// 仮想パスを変換
		$obj_path = explode( ":" , $virtual_path );
		$sub_dir = implode( "/", $obj_path );

		// 個別設定ファイルを読み込む
		$config_name = $config_type . "s/$sub_dir.$config_type";
		$c = $provider->load( $root_webapp, $config_name );		$config = is_array($c) ? array_merge($config,$c) : $config;
		$c = $provider->load( $root_system, $config_name );		$config = is_array($c) ? array_merge($config,$c) : $config;

		// プロファイル別設定ファイルがあれば読む
		$profile_name = Profile::getProfileName();
		$config_name = $config_type . "s/$sub_dir.$profile_name.$config_type";
		$c = $provider->load( $root_webapp, $config_name );		$config = is_array($c) ? array_merge($config,$c) : $config;
		$c = $provider->load( $root_system, $config_name );		$config = is_array($c) ? array_merge($config,$c) : $config;

		log_info( "system", "設定をロードしました。", __FILE__, __LINE__ );

		return new Config( $config );
	}

}
return __FILE__;
