Класс для работы с файлами .ini в php - PullRequest
0 голосов
/ 14 июля 2011

Я играл с php-классом, который я нашел в сети под названием Config Magik , который я использую для хранения некоторой информации в INI-файле, но недавно столкнулся с некоторыми проблемами при использовании removeKey.Я хотел знать, может ли кто-нибудь указать мне на подобный класс, который будет работать так же или лучше.Или, если есть лучший способ сделать это.

Это моя функция прямо сейчас, после игры с ней как сумасшедшей, так что она, вероятно, очень неисправна.

<code>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 '
';foreach ($ section как $ title => $ value) {if (! isset ($ _ GET [$ title]) && isset ($ section [$ title])) {try {$ config-> removeKey ($ title, $ section_name);echo ''. $ title. ': удалено«;} catch (Exception $ e) {echo $ e;}}}} catch (Exception $ e) {echo $ e;} $ config-> save ();// echo $ config-> toString ('HTML');эхо верно;вернуть истину;}} else {RUN SOME HTML}

Он в основном сохраняет настройки, которые я передаю, из параметров GET, и, если эти параметры отсутствуют, он должен быть удален.Когда я доберусь до $ config-> removeKey ($ title, $ section_name);в последнем операторе catch catch он не будет сохранен автоматически (как и должно быть), поэтому я попытался запустить $ config-> save (), и у меня получился INI-файл, который везде имел section = array.Буду признателен за любые советы, так как последние несколько недель я изучаю PHP в Интернете, поэтому я считаю, что у меня есть пути.

Я определенно выделил проблему в часть $ config-> save (), просто не знаю, как ее решить.

Заранее спасибо.

1 Ответ

2 голосов
/ 14 июля 2011

Я использовал Zend_Config_Ini и Zend_Config_Writer_Ini в прошлом и был доволен функциями.Вам нужно будет извлечь всю библиотеку / папку Zend / Config из Zend Framework и сделать доступным Zend_Exception.

...