手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2010年02月25日的文章

思考PHP的转换?

我在写sbConfigure类的时候,还是采用了以前的Configure的解析方法,即get方法可以以字符串的形式来读取数组变量,就象这样

PHP代码
  1. sbConfigure::get("a.b.c");  
Return:
PHP代码
  1. return self::$_config['a']['b']['c'];  

但事实上,我为了这个返回,写了五六次代码了,但最终还是采用了foreach的方法

第一次我这么处理(采用了Eval),

PHP代码
  1. //...省略  
  2. $arrkeys = "[a][b][c]"  
  3. eval("\$ret = self::\$_config$arrkeys;");  
  4. return $ret;  

后来,yhustc说这样不太安全,所以我改成了foeach的方式

PHP代码
  1. //....  
  2. $arr = self::$_config;  
  3. $_err = false;  
  4. foreach($names as $name){  
  5.     if(isset($arr[$name])){  
  6.         $arr = $arr[$name];  
  7.     }else{  
  8.         $_err = true;  
  9.         break;  
  10.     }  
  11. }  
  12. if($_err == true)return ;  
  13. return $arr;  

$_err这个变量是为了防止变量在没有设定的时候仍然返回值。。。

昨天我又想用eval,但还是失败了。。。

不知道有没有更好的转换方式,查看了parse_ini_file,因为我想,ini文件中有

XML/HTML代码
  1. [test]  
  2. a.b=1  
  3. a.c=2  

有这样的返回数组。所以我在想着参考。然而仍然失望 ,又想着pack?serialize?json_decode?之类的解决方式,但还是失败了。。郁闷啊。

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