Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem projektowy
Forum PHP.pl > Forum > PHP > Object-oriented programming
exman
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.
Cysiaczek
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.
exman
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.
Strzałek
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.
exman
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
Cysiaczek
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.
exman
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ć.
Cysiaczek
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. ?>
exman
ok. dzięki.
Wróce z pracy to będę kombinował. smile.gif
domis86
To juz lepiej trzymac zserializowane dane ( http://pl2.php.net/manual/en/function.serialize.php ) w pliku smile.gif Nie trzeba pisac parsera.
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.