Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem projektowy, przechowywanie danych konfiguracyjnych w klasie
exman
post 4.11.2007, 13:57:51
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 13.11.2005
Skąd: opole

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


Witam!
Projektuje aplikacje na prace magisterska.

Chcę zrobić skrypt instalacyjny który zainstaluje aplikacje oraz zapisze konfigurację w pliku.
I tak sobie wymyśliłem żeby dane do połączeń z bazą zapisać w osobnej klasie
wyglądało by to miej wiecej tak:
  1. <?php
  2. final class DbParams{
  3.  private $_db_host_name;
  4.  private $_db_user_name;
  5.  private $_db_user_password;
  6.  private $_db_admin_name;
  7.  private $_db_admin_passowrd;
  8.  private $_db_name;
  9.  private $_db_table_prefix;
  10.  
  11.  /*
  12. * getFunctions - zwracają informacje o polach
  13. */
  14.  
  15. public static function getUserConnectionString(){
  16.  
  17.  }
  18.  
  19. public static function getAdminConnectionString(){
  20.  
  21. }
  22.  
  23. public static function getPrefix(){
  24. return self::$_db_table_prefix;
  25. }
  26.  
  27. public static function getDbHost(){
  28. return self::$_db_host_name;
  29. }
  30.  }
  31. ?>


W innej klasie wybierany będzie obiekt do połączeń:
jeśli tylko odczyt z bazy to obiekt mysli z prawami usera
zaś zapis i modyfikacja obiekt mysli z prawami administratora.

Teraz moje pytanie czy ktoś już coś takiego robił - czy jest to dobra metoda questionmark.gif
Jakie mogą się wiązać niebezpieczeństwa z tym podejściem których nie ma przy np. pliku php z zapisaną konfiguracją w formie np.
  1. <?php
  2. define(DB_HOST,"localhost")
  3. ?>


Pozdrawiam.

Ten post edytował exman 4.11.2007, 20:28:32
Go to the top of the page
+Quote Post
Cysiaczek
post 4.11.2007, 14:57:55
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




No kochany! Jak piszesz prace magisterską z PHP, skoro nie znasz podstaw?.
Ta Twoja klasa nigdy w życiu nie zadziała! Wymieszłaś static i ->

W php najlepiej sprawdza się singleton jako metoda dostępu do obiektu DB. Alternatywnie możesz uzywać klasy w sposób statyczny, co jest lepszym sposobem hermetyzacji niż definiowanie globalnych stałych. Co do Twojego pytania "czy ktoś już coś takiego robił?" to obejrzyj dowolny framework (CodeIgniter, CakePHP, Symfony itd.) lub jakąkolwiek klasę do obsługi bazy danych.

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
exman
post 4.11.2007, 15:17:47
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 13.11.2005
Skąd: opole

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


O siet fakt zapomniałem o tym wstydnis.gif

Wcześniej robiłem to na singleton, jednak właśnie teraz chciałem mieć dostęp na dwóch poziomach odczyt oraz zapis osobno.
Widać trochę sie zagalopowałem :/
Zerknę w te frameworki a póki to dzięki za odp.
Go to the top of the page
+Quote Post
Strzałek
post 4.11.2007, 22:10:07
Post #4





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

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


Hmm, przeczytałem 2x post i tak trochę nie kumam. Po co tak? Klasa żeby tylko trzymać w niej dane do połączenie z bazą danych?

Z tego co zrozumiałem chcesz napisać instalator aplikacji. Nic prostszego. Piszesz zwykłą logikę aplikacji. Zwykły modułu z akcjami dajmy na to step1, step2, step3. Zbierasz tam dane. Nie wiem co ten twój instalator ma robić? Może skopiować jakieś pliki (step1), zapisać niezbędną konfigurację i zapisać do pliku (step2), wyczyścić cache czy coś tam (step3).

Tak to widzę winksmiley.jpg Możliwe że Cię nie zrozumiałem.


--------------------
Go to the top of the page
+Quote Post
exman
post 5.11.2007, 09:43:10
Post #5





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 13.11.2005
Skąd: opole

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


Jeśli chodzi o sam instalator to nie ma z tym problemu chodzi mi tylko czy plik konfiguracyjny zapisany przez niego (z danymi dostępu do bazy) zapisać jako zwykły plik np config.php
powiedzmy coś takiego:
  1. <?php
  2. define(DB_HOST,"localhost");
  3. //itd
  4. ?>

czy nie lepiej to zrobić by instalator zapisał plik z klasą w której będa statyczne zmienne dostępu do bazy na poziomie użytkownika i administratora
Go to the top of the page
+Quote Post
Cysiaczek
post 5.11.2007, 10:13:26
Post #6





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Najlepiej zapisać do jakiegoś formatu wymiany danych, np. XML, INI, YAML. Potem piszesz parser, który wyciąga z nich dane. Jak już wszytsko działa, to sobie robisz cache w postaci np. zserialiowanego obiektu DB.

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
exman
post 5.11.2007, 11:13:37
Post #7





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 13.11.2005
Skąd: opole

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


tez myślałem o XML ale zastanawiał mnie fakt dostępu do takiego pliku z zewnątrz, powiedzmy , że ktoś wpisze adres pliku XML w wyszukiwarce i wyświetlą mu się wszystkie dane.
Zakładając, że ktoś nie będzie takiego pliku mógł umieścić poza katalogiem www.
Chyba żeby informacje takie zaszyfrować.
Go to the top of the page
+Quote Post
Cysiaczek
post 5.11.2007, 11:38:18
Post #8





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




To albo zabezpieczasz pliki na poziomie serwera, albo tak:
  1. <?php
  2. $data=<<<XML
  3. <?xml version='1.0' standalone='yes'?>
  4. <default>
  5.  
  6. </default>
  7. XML;
  8. ?>


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
exman
post 5.11.2007, 13:18:48
Post #9





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 13.11.2005
Skąd: opole

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


ok. dzięki.
Wróce z pracy to będę kombinował. smile.gif

Ten post edytował exman 5.11.2007, 15:38:07
Go to the top of the page
+Quote Post
domis86
post 6.11.2007, 13:14:56
Post #10





Grupa: Zarejestrowani
Postów: 255
Pomógł: 5
Dołączył: 20.03.2007
Skąd: Kraków

Ostrzeżenie: (30%)
XX---


To juz lepiej trzymac zserializowane dane ( http://pl2.php.net/manual/en/function.serialize.php ) w pliku smile.gif Nie trzeba pisac parsera.
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: 24.04.2024 - 10:40