我在写sbConfigure类的时候,还是采用了以前的Configure的解析方法,即get方法可以以字符串的形式来读取数组变量,就象这样
sbConfigure::get("a.b.c");
Return:
return self::$_config['a']['b']['c'];
但事实上,我为了这个返回,写了五六次代码了,但最终还是采用了foreach的方法
第一次我这么处理(采用了Eval),
//...省略
$arrkeys = "[a][b][c]"
eval("\$ret = self::\$_config$arrkeys;");
return $ret;
后来,yhustc说这样不太安全,所以我改成了foeach的方式
//....
$arr = self::$_config;
$_err = false;
foreach($names as $name){
if(isset($arr[$name])){
$arr = $arr[$name];
}else{
$_err = true;
break;
}
}
if($_err == true)return ;
return $arr;
$_err这个变量是为了防止变量在没有设定的时候仍然返回值。。。
昨天我又想用eval,但还是失败了。。。
不知道有没有更好的转换方式,查看了parse_ini_file,因为我想,ini文件中有
[test]
a.b=1
a.c=2
有这样的返回数组。所以我在想着参考。然而仍然失望 ,又想着pack?serialize?json_decode?之类的解决方式,但还是失败了。。郁闷啊。
先记录一下,如果有更好的方法,就再次更新

评论 (0)
暂无评论