![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 5.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Temat pewnie wam znany i stary jak swiat. Pisze sobie swoj cms starajac sie zrobic to obiektowo. Dotychczas przejrzalem i przeczytalem wiele artykulow dotyczacych OOP i robie sie coraz glupszy bo z tego co rozumie to zastosowan jest multum, tylko ktore to najlepsze. mam taka klase
Pierwsze pytanie : Czy klasa User powinna miec funkcje takie jak Loguj, Rejestruj, Edytuj, Zmien Haslo i czy te funckje powinny miec juz "hardcoded" zapytania do bazy wewnatrz, patrz funckja loguj();. Wywoluje ja tak:
Jezeli cos tego pokroju jest ok to spoko. Teraz np dopisalem sobie taka funkcje to tej samej klasy, ktora jak dla mnie moglaby byc w kazdej prawie innej klasie :
Dzieki tej funkcji lapie sobie wszystko z bazy i w prosty sposob moge wywolywac wszystkie kolumny :
Bardzo podoba mi sie mozliwosc poboru rekordow i nazw wierszy tabeli w tak prosty sposob. Teraz do rzeczy : Funckja ta jest w Users ale generalnie moglaby byc w prawie kazdej innej klasie, np Products, Articles itp. Czy mam utworzyc osobna klase z ta funckja z ktorej jakos beda kozystac wszyskie inne klasy ? Czy ma byc to w klasie bazy danych, czy moze w jakies jeszcze innej ? Prosze o odpowiedzi i wyrozumialosc (IMG:style_emoticons/default/smile.gif) Ten post edytował rahul 20.08.2011, 20:50:56 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
1. Nic nie stoi na przeszkodzie, żeby UserManager zarządzał wieloma użytkownikami. Nie musisz tworzyć nowego obiektu dla każdego usera. Jeśli natomiast chcesz tworzyć UserManagera dla każdego użytkownika, to po co ci klasa User. Równie dobrze zamiast:
2. W związku z pkt. 1 nie możesz już przekazywać obiektu User w konstruktorze UserManagera. Zamiast tego będziesz musiał poinformować metodę getData() o jakiego użytkownika ci chodzi. 3. Nie wiem czym się u ciebie różni user od userData, ale moim zdaniem jest to zbędne rozgraniczenie Po oczyszczeniu kodu ze zbędnych instrukcji, zostanie ci pewnie coś w rodzaju:
Jak widzisz jedynymi informacjami jakie przekazujesz tutaj w parametrach jest ID użytkownika i hasło. Jak się pewnie domyślasz, obok DI to to nawet nie stało (IMG:style_emoticons/default/smile.gif) Dla porównania podaję zalążek kodu wykorzystania (a przynajmniej tego, jak ja to widzę) klasy UserManager, korzystającej z PDO oraz logującej błędy:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 18:02 |