php自带的parse_ini_file提供的功能不方便处理多级命名空间的写法,因此我自己实现了类似 Yaf_Config 的功能。
a.ini
widget.paths[] = APP_PATH "/application/widget/"
upload.dir = APP_PATH "/public/uploads/"
upload.pub_dir = "/newpages/public/uploads/"
parse.php
define('APP_PATH',dirname(__FILE__).'/');
function my_parse_ini($filename,$dir=null){
$a=parse_ini_file(($dir===null?APP_PATH.'/conf/':$dir).$filename,true);
$o=(object)array();
foreach($a as $key=>$value){
$w=explode('.',$key);
for($i=0,$n=count($w);$i<$n;$i++){
$t='$o->'.join('->',array_slice($w,0,$i+1));
eval('if(!@'.$t.')'.$t.'=$i<$n-1?(object)array():json_decode(\''.json_encode($value).'\',true);');
}
}
return $o;
}
// 解析a.ini
var_dump(my_parse_ini('a.ini');
输出结果为
object(stdClass)#12 (2) {
["widget"]=>
object(stdClass)#13 (1) {
["paths"]=>
array(1) {
[0]=>
string(48) "/alidata/www/shop2/newpages//application/widget/"
}
}
["upload"]=>
object(stdClass)#14 (2) {
["dir"]=>
string(44) "/alidata/www/shop2/newpages//public/uploads/"
["pub_dir"]=>
string(25) "/newpages/public/uploads/"
}
}
兼容php5.2和更新的版本
相关文档
暂无
随便看看
畅言模块加载中