Klasa służąca do pobierania i zapisywania opcji w pliku INI. Komentarze bardzo mile widziane

. Całość udostępniana na licencji Creative Common 2.0
<?php
/**
* (c) Copyright by Sławek 'Levabul' Pruchnik
*
* @author Sławek 'Levabul' Pruchnik
* @copyright Sławek 'Levabul' Pruchnik 2006
* @license <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/" target="_blank">http://creativecommons.org/licenses/by-nc-sa/2.0/</a>
* @version 0.9
*/
class IniParser {
/**
* Przechowuje sciezke do pliku
*
* @var string
* @access private
*/
private $handle;
/**
* Przechowuje sparsowany plik ini
*
* @var array
* @access private
*/
private $ini;
/**
* Okresla czy plik podczas wykonywania metody __destruct() ma zostac zapisany
*
* @var bool
* @access private
*/
private $save = 0;
/**
* Okresla czy podczas wykonywania metody __destruct() ma zostac utworzony cache pliku
*
* @var bool
* @access private
*/
private $cache = 0;
/**
* Parsuje plik ini
* jezeli plik nieistnieje tworzy go
*
* @param string $handle
* @return void
* @access public
*/
public function __construct ($handle) {
$this -> handle = $handle;
$this -> cache = 1;
$file = fopen ($handle, "w"); }
}
else
}
/**
* Sprawdza czy istanieje dana opcja
*
* @param string $name
* @param string $section (optional) okresla w jakiej sekcji ma sprawdzac czy znajduje sie opcja
* @return bool
* @access public
*/
public function optionExists ($name, $section = 0) {
if ($section)
else {
foreach ($this -> ini as $key => $value) {
if (!empty($value[$name])) }
}
}
/**
* Pobiera pojedyncza opcje
* Jezeli nie zostal podany parametr $section funkcja zwroci pierwsza napotkana o
pcje o nazwie $name
*
* @param string $name
* @param string $section (optional) okresla w jakiej sekcji znajduje sie opcja
* @return mixed
* @access public
*/
public function getOption ($name, $section = 0) {
if ($this -> optionExists ($name, $section)) {
return $this -> ini [$section][$name];
else {
foreach ($this -> ini as $key => $value) {
if (!empty($value[$name])) return $value[$name];
}
}
}
else
return false;
}
/**
* Dodaje (lub edytuje) opcję
*
* @param string $name
* @param string $value
* @param string $section (optional) okresla w jakiej sekcji znajduje sie opcja
* @return void
* @access public
*/
public function setOption ($name, $value, $section = '') {
$this -> save = 1;
$section = (empty($section)) ?
'others' : $section; $this -> ini [$section][$name] = $value;
}
/**
* Destructor klasy
* Jeżeli nastapila zmiana jakiejs opcji zapisuje opcje do pliku $this -> handle
* Jeżeli istnieje taka potrzeba tworzy cache pliku $this -> handle
*
* @return void
* @access public
*/
public function __destruct () {
if ($this -> save) {
foreach ($this -> ini as $section_name => $section) {
$content .= '['.$section_name."]n";
foreach ($section as $option_name => $option)
$content .= $option_name.' = '.$option."n";
}
file_put_contents ($this -> handle, $content);
file_put_contents
($this -> handle
.'.cache', serialize ($this -> ini
)); }
elseif ($this -> cache)
file_put_contents
($this -> handle
.'.cache', serialize ($this -> ini
)); }
}
?>
PS. Mój 100-ny post
Ten post edytował Levabul 4.07.2006, 12:01:48