Ostatnio napisalem kilka klasek w PHP, ktore przedstawialem w dziale Oceny. W nawiazaniu do nich mam kilka pytan do bardziej doswiadczonych PHPowcow. Przede wszystkim zastanawiam sie, czy jest sens tworzyc niezliczona ilosc przestrzeni nazw (np. osobna dla cache, osobna dla loggera)? Idac tak dalej, mozna by nawet tworzyc przestrzenie jak np: Framework\Logger, Framework\Logger\Handler, Framework\Logger\Processor. Oznacza to jednak, ze w danym namespace bedzie raptem kilka klasek. Moze wystarczy ograniczyc sie do \Framework, tak aby nazwy klas nie kolidowali ew. z innymi Frameworkami/klasami?
Druga sprawa to sposob ladowania pewnych rzeczy. Mianowicie obecnie, chcac aby to framework odpowiadal za ladowanie poszczegolnych bibliotek (np sterowniki do cache) robilem metode load() ktora jako parametr przyjmowala nazwe sterownika (np. apc). Nastepnie metoda ta ladowala pli o nazwie apc.php ze wskazanego katalogu, tym samym ladujac porzadany nas sterownik. Niemniej jednak, w sporej ilosci projektow znalezc mozna inne rozwiazanie, tj. przekazanie jako parametru juz stworzonego obiektu. Wowczas jednak, kto inny musi zaimplementowac podobny mechanizm (jezeli chce np dac uzytkownikowi mozliwosc wyboru z poziomu panelu konfiguracyjnego). Nie wie przeciez jaki sterownik bedzie uzyty przez uzytkownika, ani jaki pliczek zaladowac. Moze co najwyzej wydedukowac nazwe klasy w przestrzeni nazw \Framework\Cache\Driver\Apc. W obu przypadkach, nadal bedzie to jakas anzwa podana w zmiennej, a wiec kod bedzie wygladal podobnie, choc zaimplementowany moze byc w 2 roznych miejscach:
$class = '\Framework\Cache\Driver\' . $driver_name
Tak wiec, chetnie poznam Wasze zdanie odnosnie tego problemu, oraz sposob w jaki go rozwiazujecie?