![]() |
![]() |
![]()
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%) ![]() ![]() |
To z czym masz tutaj do czynienia to mapowanie obiektów do / z zapytań relacyjnej bazy. Innymi słowy, jest to ORM. Napisanie ORM-a, który miałby być zdatny do czegokolwiek jest daleko poza Twoimi obecnymi możliwościami, tak więc nawet nie próbuj brać się za to - skorzystaj z gotowego, solidnego rozwiązania. Osobiście proponuję Doctrine2 bo jest to jedyny duży, PHP-owski ORM o sensownej architekturze.
Cytat Po co tak w zasadzie mi podzial na 2 klasy, User, UserManager .. wtedy bede musial wszystkie inne pozostale klasy tez w ten sposob rozbijac. Co mi daje taki zwykly kontener ? Jakos nie bardzo to do mnie przemawia Obiekty różnych typów zajmują się różnymi rzeczami. Zawsze powinieneś starać się doprowadzić do tego by jeden obiekt zajmował się tylko jedną rzeczą. Reprezentowanie danych z bazy danych (obiekt User) i zarządzanie takimi "reprezentantami" (obiekt UserManager) to dwie zupełnie inne sprawy. Oba te obiekty wykonują zadania kompletnie nie związane ze sobą. Dlatego też muszą to być osobne obiekty.Cytat Jaka jest wtedy roznica ? Nie do konca widze... Pobierając obiekt z singletona, tworzysz "z dupy zależność" (jak to sobie zawsze określam). Poczytaj wątki o Dependency Injection [Container] (DI[C]) bo wałkowanie tej dyskujsji po raz n-ty jest męczące. W skrócie: może sam jeszcze nie dostrzegasz tego, ale to same problemy. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 04:17 |