Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [klasa] Konfiguracje PHP 5
PiratNowegoPokol...
post 15.03.2007, 20:17:43
Post #1





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 12.10.2006

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


Witam

Jest to jeden z tych działów w których jeszcze nie pisałem... pomijając jednego posta...
A skoro już trochę tutaj siedzę to pasowało by coś tu wrzucić. Więc proszę
  1. <?php
  2. class configs
  3. {
  4. private $aConfigs , $sConfigFileName , $sConfigsDir;
  5.  
  6. public function __construct( $sConfigFileName , $sConfigsDir = 'configs' )
  7. {
  8. $this->aConfigs = array();
  9. $this->sConfigFileName = $sConfigFileName;
  10. $this->sConfigsDir = $sConfigsDir;
  11.  
  12. if( !$this->aConfigs = $this->LoadConfigs( $this->sConfigFileName ) )
  13. {
  14. return false;
  15. }
  16.  
  17. return true;
  18. }
  19.  
  20. private function LoadConfigs( $sConfigFileName )
  21. {
  22. if( is_file( $this->sConfigsDir . '/' . $sConfigFileName . '.php' ) )
  23. {
  24. include_once( $this->sConfigsDir . '/' . $sConfigFileName . '.php' );
  25.  
  26. return $config;
  27. }
  28. else
  29. {
  30. return false;
  31. }
  32. }
  33.  
  34. public function SaveConfigs()
  35. {
  36. if( is_writable( $this->sConfigsDir . '/' . $this->sConfigFileName . '.php' ) )
  37. {
  38. $sConfigFile = $this->GenerateConfigFile( $this->aConfigs );
  39.  
  40. if( file_put_contents( $this->sConfigsDir . '/' . $this->sConfigFileName . '.php' , $sConfigFile ) )
  41. {
  42. return true;
  43. }
  44. else
  45. {
  46. return false;
  47. }
  48. }
  49. else
  50. {
  51. throw new Exception( 'Plik nie jest zapisywalny : ' . $this->sConfigsDir . '/' . $this->sConfigFileName . '.php' );
  52. }
  53. }
  54.  
  55. private function GenerateConfigFile( $aConfigs )
  56. {
  57. $aData = array();
  58.  
  59. foreach( $aConfigs as $sKey => $mConfig )
  60. {
  61. $sPattern = '$config['%s'] = '%s';';
  62. $aData[] = sprintf( $sPattern , $sKey , var_export( $mConfig , true ) );
  63. }
  64.  
  65. $sConfigFile = sprintf("<?phpn" . 
  66.  "// Wygenerowane automatycznien" . 
  67.  "// Dnia : %sn%sn" .
  68.  "// Koniec Pliku ...n?>" ,
  69.  date( 'Y/m/d H:i:s' ), implode( "n", $aData ) );
  70. return $sConfigFile;
  71. }
  72.  
  73. public function __set( $sConfigName , $mConfigValue )
  74. {
  75. $this->aConfigs[ $sConfigName ] = $mConfigValue;
  76. }
  77.  
  78. public function __get( $sConfigName )
  79. {
  80. return $this->aConfigs[ $sConfigName ];
  81. }
  82.  
  83. public function __isset( $sConfigName )
  84. {
  85. return isset( $this->aConfigs[ $sConfigName ] );
  86. }
  87.  
  88. public function __unset( $sConfigName )
  89. {
  90. unset( $this->aConfigs[ $sConfigName ] );
  91. }
  92.  
  93. }
  94. ?>

sposób użycia... jakże banalny
  1. <?php
  2. $alteratywna_sciezka_do_configow = 'ustawienia';
  3. $configs = new configs( 'ustawienia_newsow' , $alteratywna_sciezka_do_configow );
  4. $ile_na_strone = $configs->ile_na_strone;
  5. /*...*/
  6. $configs->ustawienie = 'nowa wartość'; 
  7. $configs->SaveConfigs();
  8. ?>

Klasa generuje zwykłe pliki php w których znajduje się tablica $config zawierająca wszystko co sobie ustawiliśmy ...

jak się klasa spodoba to może coś tam jeszcze dodam tongue.gif ...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Ociu
post 15.03.2007, 20:24:24
Post #2





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Kiepsko. Do obsługi innego pliku musisz tworzyć nowy obiekt, użycie tylko tablic, a gdzie xml, ini, yaml etc. ? Brak łączenia dwóch tablic (array_merge)

Pierwszy raz widze, aby kontruktor wracał boolean.
Go to the top of the page
+Quote Post
PiratNowegoPokol...
post 15.03.2007, 20:28:41
Post #3





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 12.10.2006

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


ooo... jestem jeszcze troche początkujący ...
Cytat
Pierwszy raz widze, aby kontruktor wracał boolean.

i jak widać nie znam się na zwyczajach ...

to było robione w 5 minut ... no ale dobra... poprawie smile.gif
Go to the top of the page
+Quote Post
mike
post 15.03.2007, 20:44:50
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(PiratNowegoPokolenia @ 15.03.2007, 20:28:41 ) *
i jak widać nie znam się na zwyczajach ...
To nie zwyczaje tongue.gif
To podstawy programowania. Powinieneś to poprawić ponieważ w żadnym języku programowania konstruktor nie zwraca nic innego jak instancję klasy.
Go to the top of the page
+Quote Post
PiratNowegoPokol...
post 16.03.2007, 15:40:24
Post #5





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 12.10.2006

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


faktycznie ... na przyszłość będę pamiętał ...

<!-- Edit ...

Chciałem się jeszcze dopytać :
  1. <configs>
  2. <config name="a"><value>b</value></config>
  3. </configs>

,
  1. <configs>
  2. <config name="a">b</config>
  3. </configs>

czy
  1. <configs>
  2. <config><name>a</name><value>b</value></config>
  3. </configs>

Robi to w praktyce jakieś znaczenie :?:

Cytat
Brak łączenia dwóch tablic (array_merge)

eee... które tablice miałeś na myśli :?:
Go to the top of the page
+Quote Post
menic
post 17.03.2007, 19:43:56
Post #6





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


Ja również podspisuje sie pod tym pytaniem smile.gif


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
hwao
post 17.03.2007, 20:39:55
Post #7


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Powinien być obsługiwany każdy typ. Zależy jakie dane trzeba zapisać
Go to the top of the page
+Quote Post
menic
post 17.03.2007, 20:46:24
Post #8





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


Typ typem, ale jestem ciekaw jak wg standardów xml powinno to być. XML jeszcze sie nie czepiałem dopiero teraz zaczynam i tak sie wlasnie nad tym zastanawiam ...


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
Ociu
post 17.03.2007, 21:21:02
Post #9





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Miałem na myśli coś takiego:
w klasie jest tablica z konfiguracją i dodajesz do niego kolejną tablicę z konfiguracją (attach( $array ))
Go to the top of the page
+Quote Post
hwao
post 17.03.2007, 23:37:08
Post #10


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Cytat(menic @ 17.03.2007, 20:46:24 ) *
Typ typem, ale jestem ciekaw jak wg standardów xml powinno to być. XML jeszcze sie nie czepiałem dopiero teraz zaczynam i tak sie wlasnie nad tym zastanawiam ...


w XML'u masz opisana strukturę dokumentu, nie masz narzuconych jakiś konkretnych sposobów przechowywanie danych, stosujesz takie jakie są Ci aktualnie potrzebne. Dlatego każdy jest poprawny, lecz w każdym lepiej się przetrzymuje pewny rodzaj danych, a inny wręcz się nie da.
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: 19.07.2025 - 15:05