![]() |
![]() |
![]()
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%) ![]() ![]() |
1. Coś w ten deseń. Mając przykładowo obiekt User z właściwościami id, email, firstName, lastName możesz mieć metody get/setId(), get/setEmail(), get/setFirstName(), get/setLastName(), getFullName() - w miarę możliwości bardzo proste, podstawowe operacje.
2. Właśnie raczej powinno to być $user->getEmail() itp. Tego pisania wcale nie ma jakoś specjalnie dużo, zresztą pierwsze lepsze IDE, RMB -> Source -> Generate Getters and Setters -> Select All -> OK, i po sprawie. 3. Nie, taki obiekt UserManager powinien mieć co najwyżej metody w stylu save($u), update($u), delete($u), jakieś najbardziej podstawowe pobieranie danych findOne($id), findAll(). Jedynie rzeczy związane z bezpośrednim zarządzaniem "reprezentantami". Takie rzeczy jak rejestracja czy logowanie to już skomplikowane, wielostopniowe procesy. Przecież takie zalogowanie użytkownika to pobranie danych, sprawdzenie ich poprawności, obsługa błędów, pobranie danych w przypadku podania prawidłowych danych, wykonanie jakiś operacji w bazie danych (typu zapisanie informacji o logowaniu w logach) i przekierowanie użytkownika. Tak mniej-więcej ten proces wygląda w najprostszym wydaniu. Przy jego obsłudze udział bierze wiele różnych obiektów. Cytat A co do seterow i geterow czy tylko klasa UserManager bedzie je posiadala (setPass, setName) takowe w klasie User nie sa mi chyba potrzebne, prawda ? Gettery i settery spotkasz w całej masie obiektów, bo jest to nic innego jak tylko nazwa dla pewnych konstrukcji w kodzie, bardzo popularnych zresztą. (http://en.wikipedia.org/wiki/Accessor_method)Cytat no i niektore funckje beda sie chyba powtarzac jak np getUserById($id). Tzn?PS. OOP ma to do siebie, że jego zalety wychodzą na jaw dopiero w nieco większych projektach. Co więcej by OOP jako takie miało sens konieczne jest by cała architektura była obiektowa. Pięć klas na krzyż nie wystarczy. Ten post edytował Crozin 22.08.2011, 17:02:24 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 03:21 |