![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 6 Dołączył: 1.02.2010 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam
Chciałbym się zorientować jakie są możliwości jeśli chodzi o centralizację konfiguracji i wykorzystywanie jej zmiennych bezpośrednio w klasach. Otóż stworzyłem sobie pliczek, załóżmy config.php i zrobiłem tam tablicę, np:
dalej mam klasę dostępową do bazy danych, taki tam banał, ale problem jest z przekazaniem zmiennych bezpośrednio do klasy np. w taki sposób:
Do tej pory zmienne konfiguracyjne ustawiałem w każdej klasie z osobna. Pomyślałem, że można zrobić klasę, tam zdefiniować tablice z danymi konfiguracyjnymi i utworzyć metody dostępowe żeby zwracały tablicę, coby dostęp wyglądał np. tak:
Pytanie jest następujące: jakie są dobre możliwości rozwiazania tego problemu? Bo czytałem, że define raczej powinno się unikać. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Podstawy OOP - obiekt nie powinien się w jakiś automagiczny sposób samoistnie konfigurować. Konfiguracja musi być przekazana mu z zewnątrz, czyli:
Jeżeli zmiennych konfiguracyjnych jest za dużo (konstruktor z 10-oma argumentami to zła rzecz) możesz utworzyć jakiś obiekt reprezentujący konfigurację dla danego obiektu, czyli:
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 6 Dołączył: 1.02.2010 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Podstawy OOP - obiekt nie powinien się w jakiś automagiczny sposób samoistnie konfigurować. Konfiguracja musi być przekazana mu z zewnątrz, czyli: Jeżeli zmiennych konfiguracyjnych jest za dużo (konstruktor z 10-oma argumentami to zła rzecz) możesz utworzyć jakiś obiekt reprezentujący konfigurację dla danego obiektu, czyli:
No rozumiem. Tak myślałem, że jest możliwość przekazania tego przez konstruktor (w zasadzie to pierwsze przyszło mi do głowy) ale znowu średnio mi się jakoś widzi za każdym wywołaniem przekazywać zmienne bądź obiekt w konstruktorze. Liczyłem na to że jest jakiś bardziej "elegancki" sposób ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
To jest właśnie elegancki sposób. Zacznij pisać testy automatyczne lub używać kodu wielokrotnie, to się o tym sam przekonasz
![]() -------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 6 Dołączył: 1.02.2010 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
OK, a ten sposób który napisałem na początku, żeby obiekt był tworzony przez konstruktor a nie przesyłany do konstruktora też się nada?
![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Wtedy równie dobrze możesz na stałe wpisać sobie konfigurację w kod klasy, bo przecież nie będzie możliwości żadnego sensownego zmieniania tych ustawień.
Cytat [...] ale znowu średnio mi się jakoś widzi za każdym wywołaniem przekazywać zmienne bądź obiekt w konstruktorze [...] A ile to masz obiektów odpowiedzialnych za połączenie z bazą danych na stronie? Zapewne jeden, może dwa.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:35 |