Neuigkeiten:

still alive...

Hauptmenü

Registry aufbauen

Begonnen von Powie, 11. Juli 2006, 09:10:25

Vorheriges Thema - Nächstes Thema

Powie

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?

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 /uploads/emoticons/icon_e_surprised.gif.a8707b3f35a569cb4cfe563fc72ef78d.gif\" alt=\":-o\" />
Achja: http://pear.php.net/package/Config/\" rel=\"external nofollow\">http://pear.php.net/package/Config/

Powie

jo..... die hab ich auch noch im Hinterkopf. Hab mit der ja schonmal experimentiert.  /uploads/emoticons/icon_e_surprised.gif.a8707b3f35a569cb4cfe563fc72ef78d.gif\" alt=\":-o\" />

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.

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 -

all your base are belong to us / Discord