我在写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?之类的解决方式,但还是失败了。。郁闷啊。

先记录一下,如果有更好的方法,就再次更新