类来操作php中的.ini文件

类来操作php中的.ini文件,php,class,configuration,ini,Php,Class,Configuration,Ini,我一直在玩一个php类,我在网上找到了这个类,我用它在INI文件中存储一些信息,但最近在使用removeKey时遇到了一些问题。我想知道是否有人能给我推荐一个类似的课程,这个课程也会很好或者更好。或者如果有更好的方法 这是我现在的功能,在疯狂地使用它之后,所以它可能是非常错误的 require_once('class.ConfigMagik.php'); $config = new ConfigMagik('config.ini', true, true); if(!empty($_GET))

我一直在玩一个php类,我在网上找到了这个类,我用它在INI文件中存储一些信息,但最近在使用removeKey时遇到了一些问题。我想知道是否有人能给我推荐一个类似的课程,这个课程也会很好或者更好。或者如果有更好的方法

这是我现在的功能,在疯狂地使用它之后,所以它可能是非常错误的

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 }
require_once('class.ConfigMagik.php');
$config=new ConfigMagik('config.ini',true,true);
如果(!空($\u GET)){
如果(!可写('config.ini')){
echo“无法写入config.ini”;
返回false;
}
//如果没有section参数,我们将不会执行任何操作。
如果(!isset($_GET['section']){
回声假;返回假;
}否则{
$section\u name=$\u GET['section'];
unset($\u GET['section']);//unset section,这样我们就可以使用GET变量操作foreach循环中的其他参数。
如果(!空($\u GET)){
foreach($\u获取为$var=>$value){
echo$var.='.$\u GET[$var].
; //检查节中是否存在所述变量$var。 如果($config->get($var,$section\u name)!==NULL){ //设置变量值。 试一试{ $config->set($var,$value,$section\u name); 在节“.$section\u name”上回显“将变量“.$var.”设置为“.$value.”; }捕获(例外$e){ echo“无法设置变量”。$var; echo$e; 返回false; } }否则{ echo$var.“不存在
”; } } } 试一试{ $section=$config->get($section_name);//获取整个节,以便我们可以对其进行操作。 回显“”;打印($section);回显“”; foreach($title=>$value){ if(!isset($_GET[$title])&&isset($section[$title])){ 试一试{ $config->removeKey($title,$section\u name); 回显“.$title.”:已删除
; }捕获(例外$e){ echo$e; } } } }捕获(例外$e){ echo$e; } $config->save(); //echo$config->toString('HTML'); 呼应真实; 返回true; } }否则{运行一些HTML}
它基本上保存了我从GET参数传递的设置,如果参数不在那里,它应该删除它。当我进入$config->removeKey($title,$section\u name);在上一个try-catch语句中,它不会自动保存(应该如此),因此我尝试运行$config->save(),结果得到了一个到处都是section=array的ini文件。在过去的几周里,我一直在网上学习PHP,所以我相信我还有很多路要走

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


提前感谢。

我过去一直在使用和,并且对这些功能感到满意。您将从Zend Framework中提取整个library/Zend/Config文件夹,并使Zend_异常可用。

我不想说这更好,但这是一个值得研究的替代方案……这很有趣。我读过,应该试试。从我刚才看到的,它至少有4MB大。我的项目是大约1mb,我想保持它非常轻。还有其他建议吗?正如我所说的,您不需要整个框架。只需library/Zend/Config、library/Zend/Config.php、library/Zend/Exception.php<100kb好吧,很高兴知道。我最终找到了解决问题的方法,我的函数现在按预期工作,但下次我会记住的。ZEND框架似乎是共识。