| <?php  | 
| /** | 
|  * PhalApi_Config_File 文件配置类 | 
|  * | 
|  * <li>从配置文件获取参数配置</li> | 
|  *  | 
|  * 使用示例: | 
|  * <br> | 
|  * <code> | 
|  *         $config = new PhalApi_Config_File('./Config'); | 
|  *         $config->get('sys.db.user'); | 
|  * </code> | 
|  * | 
|  * @package     PhalApi\Config | 
|  * @see         PhalApi_Config::get() | 
|  * @license     http://www.phalapi.net/license GPL 协议 | 
|  * @link        http://www.phalapi.net/ | 
|  * @author      dogstar <chanzonghuang@gmail.com> 2014-10-02 | 
|  */ | 
|   | 
| class PhalApi_Config_File implements PhalApi_Config { | 
|   | 
|     /** | 
|      * @var string $path 配置文件的目录位置 | 
|      */ | 
|     private $path = ''; | 
|      | 
|     /** | 
|      * @var array $map 配置文件的映射表,避免重复加载  | 
|      */ | 
|     private $map = array(); | 
|      | 
|     public function __construct($configPath) { | 
|         $this->path = $configPath; | 
|     } | 
|      | 
|     /** | 
|      * 获取配置 | 
|      * 首次获取时会进行初始化 | 
|      * | 
|      * @param $key string 配置键值 | 
|      * @return mixed 需要获取的配置值 | 
|      */ | 
|     public function get($key, $default = NULL) { | 
|         $keyArr = explode('.', $key); | 
|         $fileName = $keyArr[0]; | 
|          | 
|         if (!isset($this->map[$fileName])) { | 
|             $this->loadConfig($fileName); | 
|         } | 
|          | 
|         $rs = NULL; | 
|         $preRs = $this->map; | 
|         foreach ($keyArr as $subKey) { | 
|             if (!isset($preRs[$subKey])) { | 
|                 $rs = NULL; | 
|                 break; | 
|             } | 
|             $rs = $preRs[$subKey]; | 
|             $preRs = $rs; | 
|         } | 
|          | 
|         return $rs !== NULL ? $rs : $default; | 
|     } | 
|      | 
|     /** | 
|      * 加载配置文件 | 
|      * 加载保存配置信息数组的config.php文件,若文件不存在,则将$map置为空数组 | 
|      * | 
|      * @param string $fileName 配置文件路径 | 
|      * @return array 配置文件对应的内容 | 
|      */ | 
|     private function loadConfig($fileName) { | 
|         $config = include($this->path . DIRECTORY_SEPARATOR . $fileName . '.php'); | 
|          | 
|         $this->map[$fileName] = $config; | 
|     } | 
| } |