Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa do tworzenie plików konfiguracyjnych.
Forum PHP.pl > Inne > Oceny
tomahawk
Witam!

Z braku laku i tego że nie miałem neta przez parę minut napisałem taką oto klasę do tworzenia pliku konfiguracyjnego:

  1. <?php class config_file{
  2.  
  3. var $file; //uchwyt fopen
  4. var $var_name; //nazwa zmiennej tablicowej
  5. var $index_name; //nazwa indeksu tablicy
  6. var $num_values; //ilość zmiennych
  7. var $content; //to co ostatecznie zostanie zapisane do pliku
  8.  
  9. public function __construct($filename='config.php', $var_name='$config')
  10. {
  11. $this->file=fopen($filename, 'w');
  12. $this->var_name=$var_name;
  13. }
  14.  
  15. public function add_value($index_name, $value)
  16. {
  17.  
  18. if(!$this->num_values)
  19. {
  20. $this->content='<?php'."\n".$this->var_name.'=array('."\n".'''.$index_name.''=>''.$value.'''; 
  21. }else{
  22. $this->content.=','."\n".'''.$index_name.''=>''.$value.''';
  23. }
  24.  
  25. ++$this->num_values;
  26. }
  27.  
  28. public function excute()
  29. {
  30. $this->content.="\n".');'."\n".'?>';
  31.  
  32. $result=fputs($this->file,$this->content);
  33. fclose($this->file);
  34.  
  35. return $result;
  36. }
  37. }?>


Dość prosta klasa... Myślę że zrozumiała bez komentarzy.
Co o tym sądzicie? Coś by tu dodać?
dr_bonzo
A odczyt konfiguracji? i czemu uzywasz "var" jesli korzystasz z php5?
Cysiaczek
Dlaczego od razu robisz string z przekazanej wartości? Nie lepiej zbierać to w tablicy i dopiero przed samym zapisem zrobić z z niej string?

Pozdrawiam.
phpion
Uwagi poprzedników + moja: plik otwierasz w konstruktorze, a zamykasz w metodzie excute (execute?). Co będzie w przypadku jeśli nie wywołam tej metody albo gdy do momentu jej wywołania nastąpi błąd? Słabe to: mimo, że krótkie i proste to jednak źle przemyślane.
tomahawk
Cytat
Dlaczego od razu robisz string z przekazanej wartości? Nie lepiej zbierać to w tablicy i dopiero przed samym zapisem zrobić z z niej string?


Tak zrobiłem ponieważ pomyślałem sobie że potem mogę rozbudować add_value:
  1. <?php
  2. public function add_value($index_name, $value)
  3. {
  4. if(is_array($index_name))
  5. {
  6. $count=count($index_name)
  7.  
  8. for($i=0; $i<$count; $i++)
  9. {
  10. $this->add_value($index_name[$i], $value[$i])
  11. }
  12.  
  13. }else{
  14. if(!$this->num_values)
  15. {
  16. $this->content='<?php'."\n".$this->var_name.'=array('."\n".'''.$index_name.''=>''.$value.'''; 
  17. }else{
  18. $this->content.=','."\n".'''.$index_name.''=>''.$value.''';
  19. }
  20.  
  21. ++$this->num_values;
  22. }
  23.  
  24. }
  25. ?>

Nie robiąc stringa i w przypadku gdy przekazuje wartości poprzez tablice np.
add_value(array('index1','index2'), array('wartosc1','wartosc2'));
To z jednej zmiennej tablicowej "przelewam" wartości do drugiej... a jakoś nie lubie przelewać z wiadra do wiadra.
Cytat
A odczyt konfiguracji? i czemu uzywasz "var" jesli korzystasz z php5?

Include... zapomniałem... var? za dużo javascriptu...

@phpion
No jak nie wywołasz execute To tak jakbyś zapomniał spuścić wody... nic się nie stanie ale będziesz musiał wrócić i pociągnąć za spłuczkę. Co do tego błędu... wiem że słabe. Jakby było mocne to bym tego tutaj nie dawał, ale chce żeby było jednocześnie też proste... więc czekam na ew. propozycje...
Moli
To można zrobić w jednej funkcji, bez mieszania klas do tego. Jak już ktoś wspomniał, będzie lepiej jeśli metoda add_value będzie dodawała element do tablicy, a dopiero później będziesz generował kod.

Czemu w zmiennej var_name przekazujesz zmienna w formiei ($var) a nie tylko nazwe (var) ?
Skoro używasz php5 to po co fopen ? Nie lepiej użyć file_get_contents i file_put_contents ?

Nic specjalnego, kilka minut roboty a i tak można by to lepiej zrobić.

Ocena: 1/10
tomahawk
Przekazuje w formie $var ponieważ wiem wtedy że ma to być zmienna... Bo możne przecież zrobić plik z configiem ale ze stałymi....

Ok. dzięki all za rady...
nospor
Cytat
Przekazuje w formie $var ponieważ wiem wtedy że ma to być zmienna... Bo możne przecież zrobić plik z configiem ale ze stałymi..
var w php5 jest tylko dla celow kompatybilnych wstecz. nie nalezy go uzywac.
do oznaczenia stalej w php5 sluzy co innego.
Moli
No to nie mozesz zrobic tak
  1. <?php
  2. function funkcja ( $var = 'config' ) 
  3. {
  4. $this->var = $var ;
  5. }
  6. ?>

a później
  1. <?php
  2. $content .= '$' . $this->var . .....
  3. ?>

?
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-2025 Invision Power Services, Inc.