mam klase User, ktora jest typowa klasa uzytkownika (login, email itd) oraz UserManager, ktora odpowiada za komunikacje z baza danych, pobieranie jednego lub wielu uzytkownikow z bazy, dodawanie, update pol uzytkownika itd. zwykle korzystam z niej np poprzez:
$login = 'jakis login'; $user = new User($login); $user_manager = new UserManager(); $user_manager->insert($user);
korzystam tez z niej gdy chce pobrac usera, jego login, zdjecie profilowe itd, w podobny mniej wiecej sposob:
$user_manager = new UserManager(); $user = $user_manager->selectOneById(666);
mam jednak taki problem, ze korzystam z UserManagera w wielu miejscach programu. drukuje np liste najnowszych fotek w serwisie i w klasie do pobierania fotek dobieram do fotki dane usera funkcja selectOneById. tworze tam za kazdym razem nowego UserManagera, przez co jest on tworzony tyle razy ile jest fotek. wiem ze moge w tej funkcji pobierajacej fotki zmienic zapytanie na pobieranie z dwoch tabel (fotek i userow) i wtedy bede mial te dane, ale chce miec obiekt usera w fotce, bo mam w nim rozne inne przydatne rzeczy ktorych tym zapytaniem nie wyciagne.
czy podejscie tworzenie nowego UserManagera za kazdym razem jest zle i wplywa negatywnie na wydajnosc? czy zmienienie funkcji selectOneById na funkcje statyczna i korzystanie z tego jak UserManager::selectOneById(666) bedzie lepszym podejsciem? a moze trzymac jedna instancje UserManagera na wywolanie aplikacji i w funkcji tylko pobierac te instancje i z niej korzystac? a moze nalezy zastosowac jakies inne podejscie?