![]() |
![]() |
![]()
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: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@thek, @melkorm: Przy kodzie: $user = new User(123); jest jeden, spory problem. Skąd u licha ten obiekt będzie miał uzyskać dostęp do bazy danych, informacji o tym jak model obiektowy jest odwzorowany w bazie danych itd? Przecież nigdzie nie są one mu przekazywane. W takim razie będzie musiał w swoim wnętrzu skorzystać ze stanu globalnego by się do nich dobrać - chyba nie muszę wam wymieniać wszystkich konsekwencji korzystania z takiego czegoś? Dalej obiekt ten nagle z prostego obiektu typu POPO (PHP-owski odpowiednik POJO) staje się dosyć skomplikowanym obiektem, wykonującym dziesiątki rzeczy (koniecznych do mapowania danych z bazy). Dalej, dlaczego pobieranie po kluczu głównym jest aż tak uprzywilejowane, że jest w ogóle wrzucone w osobne miejsce? Dlaczego pobierając po przykładowo kluczu unikalnym: $userManager->findOneByEmail('abc@def.ghi') mam korzystać z obiektu menadżera, a w przypadku klucza głównego z obiektu encji? Po co tworzyć takie wyjątki?
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 08:10 |