<?php
/**
* 設定プロバイダを生成するファクトリ・クラス
*
* PHP version 5
*
* @package    core
* @author     stk2k <stk2k@sazysoft.com>
* @copyright  2008 stk2k, sazysoft
*/

class charcoal_ConfigProviderFactory 
{
	/*
	 * 設定を作成
	 */
	public static function create()
	{
//		log_info( "system",  "設定プロバイダをロードします。", __FILE__, __LINE__ );

		// 設定プロバイダクラス名
		$class_name = charcoal_Profile::getString( 'CONFIG_PROVIDER_CLASS' );

		// 未設定をチェック
		if ( !$class_name ){
			throw new charcoal_ProfileException( "CONFIG_PROVIDER_CLASS", "mandatory" );
		}

		// 設定プロバイダのインスタンス生成
		$provider = charcoal_ClassUtil::newInstance( $class_name );

		// 生成したインスタンスがIConfigProviderインタフェースを実装しているか確認
		if ( !($provider instanceof charcoal_IConfigProvider) ){
			// provider
			throw new charcoal_InterfaceImplementException( $class_name, "charcoal_IConfigProvider" );
		}

//		log_info( "system",  "設定プロバイダをロードしました。", __FILE__, __LINE__ );

		// ロードした設定プロバイダを返却
		return $provider;
	}
}
