Jump to content

Registry aufbauen


Recommended Posts

Ich mache mir gerade Gedanken darüber wie ich eine komplette registry aufbauen könnte, also flexible "Settings" für Scripte.

Ich werde mir dafür vermutlich eine kleine Klasse schreiben die die Werte ausliest, speichert, ändert und im Endeffekt das verwaltet. Was mir nur aktuell Kopfzerbrechen bereitet ist das "abspeichern" des ganzen....

Vielleicht Objekte die man serialized in der Datenbank speichert!?

Wie würdet ihr Experten das machen?

Link to post
Share on other sites

Da führt kein Weg an einer INI Datei vorbei, weil man sie schnell parsen lassen kann (parse_ini_file()) und mit einem kleinen Trick wird sie sogar sicher:

 

Einstellung1=Wert1
Einstellung2=Wert2

 

Dann noch als *.php abspeichern und gut. Ich werde dann später nochmal ne Klasse posten, wo das gut umgesetzt ist :-o


Achja: http://pear.php.net/package/Config/

Link to post
Share on other sites

Stimmt, ich hatte das schonmal gepostet. Egal, wenn mahe von der Arbeit kommt, mach ichs nochmal. Die ganzen Klassen fallen leider immer wieder meinen Neuinstallationen zum Opfer.

Link to post
Share on other sites

Danke, mahe. Ist eine PHP5 Klasse, die Funktionen würde ich heute mehr an PEAR anlehnen, aber sonst würde ichs ähnlich anlegen:

 

_ini_data[$name])) {
           return $this->_ini_data[$name];
       } else {
           return FALSE;
       }
   }

   /**
    * loads a ini file
    *
    * @access public
    * @return boolean
    *
    * @param string $filename
    */
   public function file($filename)
   {
       if (!file_exists($filename)) {
           return FALSE;
       }

       $this->_filename = $filename;
       $this->_ini_data = parse_ini_file($filename);

       return TRUE;
   }

   /**
    * overloaded method for assignments
    *
    * @access public
    * @return boolean
    *
    * @param string $name
    * @param string $value
    */
   public function __set($name, $value)
   {
       $this->_ini_data[$name] = $value;
       return TRUE;
   }

   /**
    * to converts the ini array into a string
    *
    * @access public
    * @return string
    */
   public function serialize_ini_data()
   {
       if ($this->security) {
           $contents = ';';
       } else {
           $contents = '';
       }

       foreach ($this->_ini_data as $name => $value) {
           $contents .= "$name=$value$this->line_break";
       }

       return $contents;
   }

   /**
    * to drop a variable
    *
    * @access public
    * @return boolean
    *
    * @param string $name
    */
   public function drop($name)
   {
       unset($this->_ini_data[$name]);
       return TRUE;
   }

   /**
    * to save the ini file
    *
    * @access public
    * @return boolean
    */
   public function __destruct()
   {
       if ($this->save_shutdown) {
           $fp = fopen($this->_filename, 'w');
           fwrite($fp, $this->serialize_ini_data());
           fclose($fp);
       }

       return TRUE;
   }
}
?>

 

Eine Datei anlegen bzw. ändern:

file('config.ini.php');

$config->variable1 = 'Wert1';
?>

 

Auslesen:

file('config.ini.php');

echo $config->variable1; // Wert1
?>

 

Das Speichern der Variablen wird durch den Konstruktor automatisch übernommen, ausserdem wird immer ein ";" in die erste Zeile geschrieben.

- Editiert von electr0n am 11.07.2006, 17:56 -

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...