![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 1.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam, powyzej zamiscilem kod ktory pisalem sobie na wlasne potrzeby do tworzenia,usuwania,edytkowania uzytkownikow w bazie danych. Nie jestem bardzo doswiadczony w rozwiazaniach obiektowych. Kombinowałem sobie w taki sposob zeby w klasie Uzytkownik poprzez funckcje __set sprawdzac wszystkie wprowadzane dane i ona przy wprowadzaniu jakiejs danej zwracalaby true lub false w zaleznosci od tego czy dana byla poprawna: if( !($uzytkownikNowy->mail = $Mail) echo "Wprowadzono niepoprawny adres e-mail"; Niestety nie działa ![]() Da sie jakos to zrobic zeby ($uzytkownikNowy->mail = $Mail) zwrocilo false lub true , jezeli wiecie o co mi chodzi?? Czy musze sobie zrobic inna metode odpowiedzialna za wprowadzanie wartosci do klasy? Ten post edytował marekc12 19.10.2009, 18:13:59 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 51 Dołączył: 4.02.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Możesz zaimplementować magiczną metodę __isset i po próbie ustawieniu tego meila, sprawdzać czy faktycznie został on ustawiony. Jednakże jest to dodatkowa linijka kodu. Możesz również wyrzucać wyjątek w metodzie __set jeśli podano niepoprawne dane.
-------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Ostatecznie możesz wysypywać wyjątek przy próbie wprowadzenia błędnych danych. Obejdzie się bez mutatorów, których osobiście nie znoszę.
![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 1.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Też mi się nie podoba użycie oddzielnej funkcji dla każdej jednej wprowadzanej zmiennej (mutatory) ... Ale chyba to jednak najlepsze wyjście, poniważ jak będę z zewnątrz klasy Uzytkownik wprowadzał każdą jedną zmienną do klasy to będę za każdym razem wiedział czy została ona przyjęta. A jak zrobię wyjątki to już przy pierwszej błędnej zmiennej kod zostanie zatrzymany...
A ja chciałem powiedzieć użytkownikowi które pola w formularzu źle podał, a nie tylko pierwsze pole które podał źle. Z drugiej strony mógłbym sprawdzać to przed wrzuceniem do klasy... Ale od tego jest klasa, że to się sprawdzało w niej... Jak z kilku różnych miejsc w kodzie będę wrzucał do tej klasy zmienne to lepiej żeby tam w środku było weryfikowane niż za każdym razem na zewnątrz (łatwo się pomylić i zapomnieć zweryfikować). Mam nadzieje, że zrozumieliście co napisalem, bo troche zamotałem chyba ![]() Chyba mutatory wykorzystam. Ten post edytował marekc12 21.10.2009, 14:27:16 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Tworzenie setterów/getterów jest strasznie upierdliwe. Gdy dodamy do tego jeszcze komentowanie to staje się to jeszcze bardziej upierdliwe. Nie zmienia to jednak faktu, że chyba warto je pisać. Mamy wówczas pełną kontrolę nad wypełnianiem obiektów danymi. Tworząc w setterze $this->pole = (string)$wartosc; mamy pewność, że zawsze będzie tam siedział string. Nie wspomnę już o wymuszeniach typu (set_pole(Moj_Obiekt $wartosc)). Tak więc moim zdaniem warto poświęcić nieco czasu na utworzenie setterów/getterów nawet jeśli mają po prostu ograniczać się do return $this->pole.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Z drugiej strony mógłbym sprawdzać to przed wrzuceniem do klasy... Ale od tego jest klasa, że to się sprawdzało w niej... Jak z kilku różnych miejsc w kodzie będę wrzucał do tej klasy zmienne to lepiej żeby tam w środku było weryfikowane niż za każdym razem na zewnątrz (łatwo się pomylić i zapomnieć zweryfikować). Zawsze możesz użyć interfejsu ArrayAccess. Będziesz miał wówczas wszystko wydzielone i bez problemu sprawdzisz. A i chyba szybciej działa niż settery/gettery. ![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 19:51 |