Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> xConfig - szybka i prosta konfiguracja
Sokal
post 13.07.2007, 19:13:45
Post #1





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


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/

Ten post edytował Sokal 13.07.2007, 23:42:15


--------------------
Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
NuLL
post 13.07.2007, 22:02:56
Post #2





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

Ostrzeżenie: (0%)
-----


Plaskie pliki konfiguracyjne sa malo elastyczne - moze lepiej pomyslec nad wygodnym uzyciem xml-a ?


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Sokal
post 13.07.2007, 23:35:56
Post #3





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


@up
Eeee, a co możesz osiągnąć dzięki XML-owi? czego tu nie osiągniesz? ;>


--------------------
Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
Go to the top of the page
+Quote Post
NuLL
post 13.07.2007, 23:45:41
Post #4





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $config->aplikacja->url
  3. ?>

Da sie tak u ciebie ?


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Sokal
post 14.07.2007, 00:29:14
Post #5





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


@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');


--------------------
Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 00:59