首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类在php中操作.ini文件

问类在php中操作.ini文件
EN

Stack Overflow用户
提问于 2011-07-15 02:13:01
回答 1查看 740关注 0票数 0

我在网上找到了一个名为Config Magik的php类,用于在INI文件中存储一些信息,但最近在使用removeKey时遇到了一些问题。我想知道是否有人可以给我推荐一个类似的课程,效果也会一样好,甚至更好。或者是否有更好的方法去做这件事。

这就是我现在的功能,在疯狂地使用它之后,所以它可能是非常有缺陷的。

代码语言:javascript
复制
require_once('class.ConfigMagik.php');
$config = new ConfigMagik('config.ini', true, true);

if(!empty($_GET)){
    if(!is_writeable('config.ini')){
        echo 'Could not write to config.ini';
        return false;
    }
  //if there is no section parameter, we will not do anything.
  if(!isset($_GET['section'])){ 
    echo false; return false;
  } else {
    $section_name = $_GET['section'];
    unset($_GET['section']);     //Unset section so that we can use the GET variable to manipulate the other parameters in a foreach loop.
    if (!empty($_GET)){
      foreach ($_GET as $var => $value){
            echo $var.'='.$_GET[$var].'<br />';
            //Check if said variable $var exists in the section.
        if($config->get($var, $section_name) !== NULL){
            //Set variable value.
          try{
              $config->set($var, $value, $section_name);
              echo 'Setting variable '. $var.' to '.$value.' on section '.$section_name;
          } catch(Exception $e) {
                echo 'Could not set variable '.$var;
                echo $e;
                return false;
          }
        } else {
            echo $var.' does not exist <br />';
        }
      }
    }
    try{
      $section = $config->get($section_name); //Get the entire section so that we can manipulate it.
      echo '<pre>';print_r($section);echo '</pre>';
            foreach ($section as $title=>$value){
        if(!isset($_GET[$title]) && isset($section[$title])){
            try{
            $config->removeKey($title, $section_name);
            echo '<b>'.$title.'</b>: removed <br />';
            } catch(Exception $e){
                echo $e;
          }
        }
      }
    } catch(Exception $e){
        echo $e;
    }
    $config->save();
    //echo $config->toString('HTML');
    echo true;
    return true;
  }
} else { RUN SOME HTML }

它基本上保存了我从GET参数传递的设置,如果参数不在那里,它应该删除它。当我到达$config->removeKey($title,$section_name);在最后一条try catch语句中,它不会自动保存(正如它应该的那样),所以我尝试运行$config-> save (),结果得到一个到处都有section = array的ini文件。任何建议都将不胜感激,因为我在过去的几周里一直在网上学习PHP,所以我相信我还有一段路要走。

我已经明确地将问题隔离到$config->save()部分,只是不知道如何解决它。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-15 02:38:53

我过去一直在使用Zend_Config_Ini和Zend_Config_Writer_Ini,对它们的功能很满意。您需要从Zend Framework解压整个库/Zend/Config文件夹,并使Zend_Exception可用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6697973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档