Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: xConfig - szybka i prosta konfiguracja
Forum PHP.pl > Inne > Oceny
Sokal
Hej!

Klasę napisałem raczej z nudów, ale może się komuś przyda smile.gif

  1. <?php
  2. /**
  3.  * xConfig - klasa konfiguracyjna
  4.  * 
  5.  * @author Dominik Sokal
  6.  */
  7. class xConfig implements IteratorAggregate 
  8. {
  9. /**
  10.  * Zmienne konfiguracyjne
  11.  *
  12.  * @access private
  13.  * @var array
  14.  */
  15. private $variables = array();
  16.  
  17. /**
  18.  * Ustawianie zmiennych początkowych
  19.  *
  20.  * @access public
  21.  * @param array $variables
  22.  * @return void
  23.  */
  24. public function __construct($variables = array())
  25. {
  26. foreach($variables as $key => $value)
  27. {
  28. $this->$key = $value;
  29. }
  30. }
  31.  
  32. /**
  33.  * Zwracanie iteratora
  34.  *
  35.  * @access public
  36.  * @return ArrayIterator
  37.  */
  38. public function getIterator()
  39. {
  40. return new ArrayIterator($this->variables);
  41. }
  42.  
  43. /**
  44.  * Ustawianie zmiennej
  45.  *
  46.  * @access public
  47.  * @param string $name
  48.  * @param mixed $value
  49.  * @return void
  50.  */
  51. public function __set($name, $value)
  52. {
  53. $this->variables[$name] = $value;
  54. }
  55.  
  56. /**
  57.  * Pobieranie zmiennej 
  58.  * 
  59.  * @access public 
  60.  * @param string $name
  61.  * @return mixed
  62.  */
  63. public function __get($name)
  64. {
  65. return (isset($this->variables[$name]) ? $this->variables[$name] : null);
  66. }
  67.  
  68. /**
  69.  * Wyświetlanie zmiennych konfiguracyjnych
  70.  *
  71.  * @access public
  72.  * @return string
  73.  */
  74. public function __toString()
  75. {
  76. return '<pre>'.print_r($this->variables, true).'</pre>';
  77. }
  78.  
  79. /**
  80.  * Pobieranie zmiennych z pliku
  81.  *
  82.  * @access public
  83.  * @param string $file
  84.  * @return void
  85.  */
  86. public function readFile($file)
  87. {
  88. if(file_exists($file))
  89. {
  90. $data = file($file);
  91. }
  92. else
  93. {
  94. die('Plik nie istnieje!');
  95. }
  96. $this->cleanArray($data);
  97. foreach($data as $line)
  98. {
  99. eval('$this->'.trim($line).';');
  100. }
  101. }
  102.  
  103. /**
  104.  * Czyszczenie tablicy ze zbędnych elementów
  105.  * 
  106.  * @access private
  107.  * @param array $array
  108.  * @return void
  109.  */
  110. private function cleanArray(&$array)
  111. {
  112. foreach($array as $key => $value)
  113. {
  114. if(trim($value) == '')
  115. {
  116. unset($array[$key]);
  117. }
  118. }
  119. }
  120. }
  121. ?>


Przykładowy wygląd pliku config:
Kod
tablica  =  array('element ()', 1, 3, 4, array(1, 2, 3))
slownik  =  array('klucz' => 'wartosc', 'klucza' => 1)
zmienna  =  123
zmienna_2  =  'string'


Przykład użycia:
Kod
<?php
$config = new xConfig();
$config->readFile('config.cfg');

foreach($config as $key => $value)
{
  echo $key.' => '.$value.'<br />'."\r\n";
}
?>


Co można dodać ? biggrin.gif

Poprawne BB Code? : P (poprawiłem) /~strife/
To kolorowanie PHP czasem kod rozwala : P | np. teraz rozwaliło trzeci blok z kodem/~sokal/
NuLL
Plaskie pliki konfiguracyjne sa malo elastyczne - moze lepiej pomyslec nad wygodnym uzyciem xml-a ?
Sokal
@up
Eeee, a co możesz osiągnąć dzięki XML-owi? czego tu nie osiągniesz? ;>
NuLL
  1. <?php
  2. $config->aplikacja->url
  3. ?>

Da sie tak u ciebie ?
Sokal
@up
A da się tongue.gif

Plik config:
Kod
obiekt = new mysqli('lol', 'lol', 'lol', 'lol')


A pozniej:
Kod
$this->obiekt->query('select foo from bar');
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.