Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Trzy pytania o spojnosc
q.michal
post
Post #1





Grupa: Zarejestrowani
Postów: 111
Pomógł: 1
Dołączył: 24.12.2013

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


Czesc wszystkim.


Mam 2 pytanai dotyczace spojnosci kodu i parametrow:

Otoz pisze klase do obslugi logow, ktora ma pozwalac na zapisywanie ich w plikach, bazie danych czy przesylanie do sysloga, w zaleznosci od wybranego poziomu logowania. Dzieki temu bledy moga trafic do innego miejsca niz ostrzezenia. W oby przypadkach moze to byc rozna baza danych, badz rozne pliki.

Tak wiec, pierwsze klaska w ktorej bede zapisywal logi do plikow musi wiedziec do jakiego pliku je zapisac, natomiast klasa logujaca zdarzenia w bazie musi wiedziec w jakiej bazie i jakiej tabeli sa przechowywane. To sprawia ze parametry konfiguracyjne beda nie tylko rozne, ale roznic bedzie sie takze ich ilosc. (plik - nazwa pliku; DB - baza, tabela). Chcialem aby w obu przypadkach, opcje byly przekazywane w formie tablicy do konstruktora:
  1. function __construct($config = []);

I nastepnie szukac w $config['filename'], $config['db'], $config['table'] itp.

Wywolanie konstruktora byloby wowczas takie samo. Pytanie nr 1 brzmi: czy to dobre podejscie?
W sytuacji gdyby np sciezka do pliku nie zostala podana, chcialbym rzucic wyjatek mowiacy o tym, ze do konstruktora zostala przekazana nieprawidlowa konfiguracja.

Tutaj jednak rodzi sie drugie pytanie: Otoz wyobrazam sobie w przyszlosci jakis panel administracyjny w ktorym bedzie mozna wybrac ze system ma logowac bledy do pliku lub bazy i po wybraniu odpowiedniej opcji, uzytkownik dostanie odpowiednie pola do wyboru. Skad aplikacja ma wiedziec ze 1 konstruktor czeka na $config['filename'] a drugi na $config['db'] i $config['table'] ?

Ostatnie pytanie brzmi: Jak najlepiej zapewnic takiej klasie dostep do bazy danych? Powinna ona w parametrze $config['db'] dostac DSNa i nawiazac polaczenie do bazy? A moze skorzystac z tego samego polaczenia co cala aplikacja? Co jesli to beda 2 rozne bazy? Moze powinien pierw sprawdzac czy w $config['db'] jest obiekt klasy Database i wtedy operowac na nim, a jesli nie, sprawdzic inna opcje - przykladowo $config['dsn'] i nawiazac nowe polaczenie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
q.michal
post
Post #2





Grupa: Zarejestrowani
Postów: 111
Pomógł: 1
Dołączył: 24.12.2013

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


2. Co w sytuacji, kiedy budujac panel admina bede chcial, aby uzytkownik mogl podac wszystkie dane? Aby odpowiednie input boxy mu sie pojawily po wybraniu pozycji z drop-listy? Jesli dobrze rozumiem, trzeba bedzie wszystko oskryptowac? Moglbym zaimplementowac metode customLogger->listWrappers(); ktora zwroci liste wszystkich obslugiwanych backendow i dodac wszystkie elementy tablicy do drop-listy, ale nie bede mial niezbednych parametrow.

Z jednej strony mozna by zrobic switcha i dopisac odpowiednie parametry (wg. dokumentacji), z 2 strony trzeba bedzie to robic za kazdym razem kiedy dodany zostanie nowy backend.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 15:06