![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
Mam w planach przygotowanie klasy o dumnie brzmiącej nazwie 'Core_Config', której będę używał do przechowywania konfiguracji systemowych jak i niesystemowych.
Klasa ma dostarczać następujących możliwości: dostęp do konfigów w każdym miejscu aplikacji, moge to rozwiązać na 2 sposoby, albo singleton, albo 'registry' które delikatnie mowiąc 'podpatrzyłem' (ctrl+c) z zenda:
nie zdecydowałem się jeszcze której z metod będe się trzymał, singleton jednak w tym momencie wydaje sie być rozsądniejszy. Chciałbym w tak inteligentny sposob przygotować klase, aby moc dodawać do niej nowe 'rodzaje' przechowywania danych. Na starcie mam dwa - ini oraz mysql. Nie chciałbym tego jednak wpakować w jedną klasę. Chciałbym rodzielić to i w razie potrzeby mieć łatwo dopisać kolejne rodzaje, np pliki.txt, xml itp. Napewno tez w jakiś sposób musiałbym zawładnąć nadpisywaniem czy tam 'priorytetem' parametrów w momencie kiedy parametry w ini i mysql mają takie same nazwy. Myslałem o zastosowaniu wzorca Factory:
Tylko pytanie, jak przyjaźnie oddzielić kod odpowiedzialny za zarządzanie konfigami (W przypadku ini chodzi o zwykłe wczytanie danych z pliku, natomiast w momencie mysql'a chciałbym miec tez możliwość dodania metody setParam($name, $value); myslalem o zastosowaniu klas abstrakcyjnych (Core_Config_Ini, Core_Config_Mysql, Core_Config_Xml), ale niestety nie napiszę
z wiadomych przyczyn. |
|
|
![]()
Post
#2
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
Cod do singletona albo rejestru, możesz trzymać w obu, to przecież żadne problem - referencja.
Co do różnych zródeł:
Tyle. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
jedno ale...
w jaki sposob MySQLConfigSource ma udostepnic metode setParam() w w CoreConfig? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 24.09.2003 Skąd: Giżycko / Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat class IniConfigSource implementation ConfigSource { Zamiast implementation powinno być oczywiście implements. Kolega hwao nieumyślnie się walnął w przykładzie ![]() ___ Juz go poprawilem:) AP -------------------- |
|
|
![]()
Post
#5
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
Tak nie możesz robić...
Możesz przerobić interfejs i dodac
ConfigCore pobiera wszystkie dane, tworzy wspólna tablice, i udostępnia je jakimś algorytmem. @Denver wszystko z głowy na szybko pisze, a dopiero wstałem ;-) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 08:41 |