
CODE
<?php function cfg_escape($x) { } class Config { private $in='', $file; public $var='cfg+'; //Domyślna zmienna dla tablicy ustawianej przez SET() function __construct($file) { $this->file=$file; } #Dodaj dane z tablic private function loop(&$array) { foreach($array as $key=>$val) { { $this->in.='''.$key.''=>array('; $this->loop($val); $this->in.='),'; } else { if($val==='on') $val=1; } } } #Dodaj zmienną function add($var,&$val) { { $this->in.='$'.$var.'=array('; $this->loop($val); $this->in.=');'; } else { } } #Dodaj wiele wartości function set(&$list) { $this->in.='$'.$this->var.'=array('; $this->loop($list); $this->in.=');'; } #Zapisz function save(&$data=null) { if($data) $this->set($data); if(file_put_contents($this->file,'<?php '.$this->in.' ?>',2)) { return true; } return false; } } ?>
Przykład budowy pliku przy pomocy klasy:
<?php $file = new Config('katalog/nazwa_pliku.php'); $file -> add('config', $_POST); //Dodajemy zmienną $config - ma zawierać klucze z tablicy $_POST $file -> add('zmienna', 'Hello world!'); //$zmienna ma wartość "Hello world!" if($file -> save()) { } return; //Kończymy! (jeśli aktualny plik ma się dalej nie wykonywać - nie tylko dla funkcji) ?>
Klasa nie sprawdza poprawności nazw zmiennych, dlatego powinny być poprawne. Inne funkcje:
SET($zmienna, $tablica) - przypisywanie kluczy tablicy do domyślnej zmiennej
SAVE($data) - można od razu wykonać SET(), przekazując tablicę jako argument $data