我在写sbConfigure类的时候,还是采用了以前的Configure的解析方法,即get方法可以以字符串的形式来读取数组变量,就象这样
PHP代码
- sbConfigure::get("a.b.c");
PHP代码
- return self::$_config['a']['b']['c'];
但事实上,我为了这个返回,写了五六次代码了,但最终还是采用了foreach的方法
第一次我这么处理(采用了Eval),
PHP代码
- //...省略
- $arrkeys = "[a][b][c]"
- eval("\$ret = self::\$_config$arrkeys;");
- return $ret;
后来,yhustc说这样不太安全,所以我改成了foeach的方式
PHP代码
- //....
- $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文件中有
XML/HTML代码
- [test]
- a.b=1
- a.c=2
有这样的返回数组。所以我在想着参考。然而仍然失望 ,又想着pack?serialize?json_decode?之类的解决方式,但还是失败了。。郁闷啊。
先记录一下,如果有更好的方法,就再次更新