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: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%)
|
Kod Dyskusja o getterach i setterach wyszła od klasy User, której właściwości nie zmieniają co wywołanie strony, więc skąd te argumenty o sprawdzaniu wartości w tablicy POST? Nawet to, co napisałeś na poprzedniej stronie, czyli dodawanie niestandardowych pól do profilu użytkownika, nie wymusza korzystania z pojedynczych funkcji get() i set() w klasie User: Niby tak, lecz wciąż nie wiesz ile tych pól będzie miał autor tematu, jeżeli to będzie tak jak wyżej napisałem 70 pól, wówczas masz 140 metod samych geterów i seterów. No ale co kto lubi. Każda modyfikacja bazy = modyfikacja klasy user. Gdyby to była magia to pretensje mieć można. Niby nie wymusza, bo pola są powiedzmy stałe, lecz w każdym seterze/geterze trzeba niemal powielać warunki, bo albo stworzysz jedną metodę has, którą będziesz w 140 metodach powielał; albo za każdym razem tworzysz warunek, co z DRY i KISS nie ma nic wspólnego. Wraca po kilku miesiącach do projektu, i nie wie jakie tam były pola, no ale przecież istnieje metoda getAll() która zwraca wszystkie klucze. Zresztą sam zdecyduje co będzie robić. Wszystko, byleby nie magia. Jak ci wygodnie jest klepać pierdyliard metod, to twoja mańka. Odniosłem się do przykładów z między innymi tablicą post, jako przykładu, że w tej tablicy nie zawsze wiesz co ląduje, i tworzenie dla tej i podobnych tablic pierdyliarda metod i warunków sprawdzających czy klucz istnieje jest zwyczajnym bezsensem (dla mnie) i niepotrzebnym powielaniem kodu (DRY). |
|
|
|
rahul prawidlowe OOP , struktura klasy 20.08.2011, 20:43:29
Noidea CytatPierwsze pytanie : Czy klasa User powinna mie... 21.08.2011, 08:10:16
rahul Dzieki za odpowiedz.
Mam szereg nastepnych pytan.... 21.08.2011, 10:43:14
Crozin To z czym masz tutaj do czynienia to mapowanie obi... 21.08.2011, 13:10:42
rahul CytatObiekty różnych typów zajmują się różnymi rze... 22.08.2011, 15:59:51
Crozin 1. Coś w ten deseń. Mając przykładowo obiekt User ... 22.08.2011, 17:00:00
rahul Dzieki Crozin, szczegolnie za cierpliowac , tak so... 22.08.2011, 17:29:34
melkorm OOP - sam miałem z tym wiele problemów na początku... 22.08.2011, 17:54:10
rahul Taaaa...
wlasnie pisze swojego cms'a po raz 2... 22.08.2011, 18:28:15
by_ikar Zamiast tworzyć ileś tam tych seterów i geterów, m... 22.08.2011, 22:11:44
Crozin @by_ikar: Zerowe wsparcie ze strony IDE czy narzęd... 22.08.2011, 22:50:44
by_ikar Nie wiem z jakiego ID korzystasz, ale mój podpowia... 22.08.2011, 23:12:56
starach Metody magiczne i po problemie.
[PHP] pobierz, p... 22.08.2011, 23:17:38
Crozin Mając 70 publicznych właściwości w obiekcie get*()... 22.08.2011, 23:25:43
melkorm To jeżeli już tym torem idziemy to zrobić to jak m... 22.08.2011, 23:27:39
starach Hmm, a możecie napisać co wy macie przeciwko tej m... 22.08.2011, 23:31:21
Crozin A po co korzystać z metod magicznych skoro:
[PHP] ... 22.08.2011, 23:53:50
starach Jest jeden argument za tym żeby je właśnie stosowa... 23.08.2011, 01:06:16
Crozin @starach:
Pierwszy przykład to przykład poprawnie ... 23.08.2011, 02:14:01
melkorm Jestem absolutnie za Crozin'em, wchodząc w źró... 23.08.2011, 02:51:29
by_ikar CytatAle sam także jestem przeciwnikiem __set i __... 23.08.2011, 07:38:25
Noidea @by_ikar Dyskusja o getterach i setterach wyszła o... 23.08.2011, 08:53:49
rahul Rozumiem. Ze wzorca mvc poki co nie kozystam, to c... 23.08.2011, 09:20:07
melkorm @by_ikar, to o czym mówisz to inna baja wtedy robi... 23.08.2011, 09:43:14
Crozin @by_ikar: Pisałem to już wcześniej... temat jest o... 23.08.2011, 10:04:13
mike ~by_ikar zainteresuj się takim pojęciem jak kohezj... 23.08.2011, 10:14:24
rahul CytatOK, widzę że nie zrozumiałeś. Mając 70 public... 23.08.2011, 10:14:42
by_ikar Kod@by_ikar: Pisałem to już wcześniej... temat... 23.08.2011, 10:31:38
rahul Podsumowanie lekcji ...
czyli co , bedzie to tak ... 23.08.2011, 18:39:35
starach Blisko, nawet bardzo. Tylko getByUserId do drugiej... 23.08.2011, 19:06:56
rahul no to klawo, mam nadzieje ze reszta mozgowcow tez ... 24.08.2011, 08:31:42
Crozin 1. Po co obiektowi User dostęp do bazy danych? Dla... 24.08.2011, 09:17:59
rahul CytatPo co obiektowi User dostęp do bazy danych? D... 24.08.2011, 10:08:24
thek A nie pomyślałeś, że UserManager poprzez zarządzan... 24.08.2011, 11:33:50
rahul @thek - Czy zatem obiekt zwrocony z funckji UserMa... 24.08.2011, 12:02:00
Crozin W skrócie:[PHP] pobierz, plaintext class User ... 24.08.2011, 13:04:55
thek Pomyśl nad tym co chcesz osiągnąć... Jak dla mnie ... 24.08.2011, 13:09:08
melkorm Jak najbardziej popieram wizję Thek'a,
[PHP] ... 24.08.2011, 13:22:26
Crozin @thek, @melkorm: Przy kodzie: $user = new Use... 24.08.2011, 13:41:42
rahul @Crozin - No to takie cos napisalem, czyli nowy o... 24.08.2011, 14:06:57
thek @Crozin: niekoniecznie ze stanu globalnego. Kto mi... 24.08.2011, 17:05:20
smentek Chciał bym się odnieść do paru perełek:
1. Metody... 24.08.2011, 20:14:52
rahul Ey ziomeczki, a nakierujcie mnie prosze w kwesti n... 25.08.2011, 00:32:14
Fifi209 Napisz klasę, która będzie obserwować obiekt, jak ... 25.08.2011, 00:52:55
rahul no jo, ale nie bardzo wiem jak 25.08.2011, 01:20:32
Noidea @Fifi209 Moim zdaniem bez sensu. Przy zmianie kilk... 25.08.2011, 08:02:24
rahul a no, jak tak to bez problemu.
Kontynuujac - Cz... 26.08.2011, 22:13:56 
starach Cytat(rahul @ 26.08.2011, 23:13:56 ) ... 27.08.2011, 01:16:53
Sajrox Chciałbym poćwiczyć technikę 'Dependency Injec... 5.09.2011, 11:16:50
Noidea 1. Nic nie stoi na przeszkodzie, żeby UserManager ... 6.09.2011, 09:04:14
Sajrox Wydaje mi się że poniższe rozwiązanie nie jest zby... 7.09.2011, 10:16:11
Noidea CytatZawsze gdy chcemy utworzyć instancję klasy ... 7.09.2011, 12:36:48 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 17:36 |