zend framework ini配置文件大致读取过程 以及处理函数
2014-04-11 20:38
519 查看
首先建立标准配置文件,跟php.ini配置文件相识的
<?php $iniArray = parse_ini_file('application.ini',true); //在Zend_Config_Ini类中可以找到 //var_dump($iniArray); //处理扩展 function loadfile($config)//在Zend_Config_Ini类中可以找到 { $iniArray = array(); foreach ($config as $key=>$val) { $pices = explode(':', $key); //当前区域 $currSection = trim($pices[0]); switch(count($pices)) { case 1: //没有扩展 $iniArray[$currSection] = $val; break; case 2://存在扩展 $extendSection = trim($pices[1]); //将继承(扩展)添加到对应的区域,作为对应区域的第一个元素 $iniArray[$currSection] = array_merge(array(';extends'=>$extendSection),$val); break; } } return $iniArray; } $iniArray = loadfile($iniArray); //接下来就是更具区域来读取 //读取testing区域和mysql $section = array('testing','mysql'); $dataArray = array(); foreach ($section as $sectionName) { //这里合并多个区域的配置信息 $dataArray =_arrayMergeRecursive(_processSection($iniArray, $sectionName),$dataArray); } $iniArray = $dataArray; //读取区域 function _processSection($iniArray,$section,$config=array())//在Zend_Config_Ini有对应的源代码 { $currSection = $iniArray[$section]; foreach ($currSection as $key=>$val) { if(strtolower($key)==';extends') //这里当前区域存在继承 { if(isset($iniArray[$val])) //检查继承区域是否存在 { $config = _processSection($iniArray, $val,$config); //递归到继承区域 } } else { $config = __processKey($config, $key, $val); } } return $config; } function __processKey($conf,$key,$val)//在Zend_Config_Ini有对应的源代码 { if(strpos($key, '.')!==false) { //这里每次只取出一个点 $pices = explode('.',$key,2); if(strlen($pices[0])&&strlen($pices[1])) { if(!isset($conf[$pices[0]])) { $conf[$pices[0]] = array(); } $conf[$pices[0]] = __processKey($conf[$pices[0]], $pices[1], $val); } } else { $conf[$key] = $val; } return $conf; } //若果读取的区域是多个那么通过_arrayMergeRecursive 函数来合并读取区域配置信息 function _arrayMergeRecursive($firstArray, $secondArray)//在基类Zend_Config中有对应的源代码 { if (is_array($firstArray) && is_array($secondArray)) { foreach ($secondArray as $key => $value) { //如果第二个数值中的键在第一个中存在 //那么合并这个键对应的值 if (isset($firstArray[$key])) { $firstArray[$key] = _arrayMergeRecursive($firstArray[$key], $value); } else { if($key === 0) { $firstArray= array(0=>_arrayMergeRecursive($firstArray, $value)); } else { $firstArray[$key] = $value; } } } } else { $firstArray = $secondArray; } return $firstArray; } var_dump($iniArray); ?>
相关文章推荐
- Hibernate读取配置文件,创建sessionFactory的执行过程以及用工具类优化
- springboot读取自己定义的配置文件的方式以及使用joda_time来处理时间日期
- zhphp framework (七) 配置文件加载与读取以及动态写、读配置文件
- 关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、文件夹结构、设置压缩和对中文文件名称的支持、以及Catalina这个名字的由来……等)
- shell脚本读取ini配置文件的值
- PHP parse_ini_file() 函数 解析配置文件
- java读取和修改ini配置文件实例代码
- Android读取init.rc配置文件parse_config函数解析
- 利用GetPrivateProfileString读取配置文件(.ini)
- thinkphp 配置修改 读取配置项 以及文件修改
- SpringBoot读取配置文件的两种方式以及自定义配置文件的读取
- Java乔晓松-SSH框架整合配置文件的配置以及事务处理
- 学习ORACLE中关于配置文件的读取和修改心得以及问题
- 自己写的几个Linux 和 Windows 读ini配置文件的函数
- 标准C处理类似INI配置文件的键值型文档
- Java读取和修改ini配置文件
- SSH框架系列:Spring读取配置文件以及获取Spring注入的Bean
- PHP获取和操作配置文件php.ini的几个函数
- linux用户登陆的读取配置文件过程
- 基于FreeRTOS与MQTT的物联网技术应用系列——步进电机控制(三)SD卡驱动、FatFS等的移植和ini配置文件读取的实现