![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 0 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Postanowiłem spróbować swoich sił w OOP, na przykładzie skryptu rejestracji użytkowników. Napisałem coś takiego i o dziwo działa ![]() Za wszelkie opinie, porady serdecznie dziękuję ![]()
-------------------- Pytania i odpowiedzi na każdy temat - ZapytajSie.pl
Darmowe aliasy i liczniki odwiedzin - RFV.pl |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
z jakiego powodu nie uzywasz PDO ?
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat ale za to również nie wyświetla komunikatu Oczywiscie ze nie 1) poczytaj o zasięgu zmiennych 2) poczytaj o czyms takim jak return, albo wlasciwosci klasy 3)Temat OOP nie do konca powstał na takie tematy. przenosze -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
podejscie z adduser jest dla mnie troche dziwne. Moim zdaniem powinno byc jakies "save" ktore zapamietywaloby identyfikator uzytkownika, albo w ogole powinienes oddzielic warstwe z tym userem, od warstwy zapisujacej dane do bazy
z save wygladaloby to jakos tak
generalnie logiczniej bedzie jesli obiekt uzytkownika bedzie reprezentowal jednego konkretnego uzytkownika. Jesli chcesz masowo dodawac uzytkownikow to moim zdaniem powinienes zrobic inna klase - fabryke - ktora bedzie tworzyla obiekty klasy user
moim zdaniem cos w ten desen, ale sie opisalem.. Ten post edytował yevaud 16.09.2010, 19:46:54 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 0 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat z jakiego powodu nie uzywasz PDO ? Gdyż to tylko testowy kod, szybciej pisze się bez PDO. Nacodzień jednak korzystam z dobrodziejstw PDO. Cytat podejscie z adduser jest dla mnie troche dziwne Nie bardzo rozumiem jak mam oddzielić warstwę z userem od zapisywania? Rozumiem, że proponujesz, aby w inny sposób przekazać zvalidowane dane do zapytania SQL, tak? Masz jakąś konkretną propozycję? Napisany przeze mnie kod miałby służyć do rejestracji użytkowników w serwisie poprzez formularz i miałby operować na otrzymanych danych, więc nie będzie to na masową skalę. Nie mniej jednak nie bardzo rozumiem idee "fabryki". Co ona powinna zawiera/robić? Wyświetlanie komunikatów udało mi się rozwiązać po wskazówkach Nospor'a:) Czy ten sposób jest OK? Czy jest lepsze rozwiązanie? Natomiast nadal nie bardzo wiem, jak udoskonalić resztę kodu. Bardzo proszę o porady, pomoc. Teraz wygląda on tak:
-------------------- Pytania i odpowiedzi na każdy temat - ZapytajSie.pl
Darmowe aliasy i liczniki odwiedzin - RFV.pl |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. new new_user();. Czy taki zapis ma dla Ciebie sens? Wywal ten śmieszny przedrostek "new_" z nazwy.
2. Metoda validate - przecież ona niczego nie sprawdza - jedyne co robi to przygotowuje dane do zapisu do bazy. 2.1. Tym powinno zajmować się PDO (czy coś takiego). 2.2. Usuwanie "dobrodziejstw" magic quotes powinno być raczej gdzie indziej. 2.3. htmlspecialchars powinno używać się przed wyświetleniem danych, a nie ich zapisywaniem. 3. Status nowego użytkownika to może być "zarejestrowany", "autoryzowany" itp., a nie "login jest zajęty" - od czegoś takiego są wyjątki. 4. Od sprawdzania poprawności emaila masz filter_var, a nie eregi (notabene oznaczone już jako deprecated) 5. Twój obiekt to: reprezentant użytkownika, walidator danych z formularza, warstwa zapisująca dane po rejestracji, jakiś ogólny filtr dla danych trafiających do bazy - a jedna z podstawowych zasad OOP brzmi: jeden obiekt - jedno zadanie. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 0 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat 2. Metoda validate - przecież ona niczego nie sprawdza - jedyne co robi to przygotowuje dane do zapisu do bazy. Metoda ta usuwa, zastępuje niedozwolone znaki, następnie w ifie porównuję login wprowadzony przez użytkownika z tym, który został przepuszczony przez validację. Jeśli oba są jednakowe to login uznany jest za poprawny. Cytat 2.1. Tym powinno zajmować się PDO (czy coś takiego). PDO będzie, nie użyłem go tylko w tym kodzie "szkoleniowym" Cytat 2.2. Usuwanie "dobrodziejstw" magic quotes powinno być raczej gdzie indziej. Chodzi Ci o to, że powinno być uaktywnione na serwerze? Cytat 5. Twój obiekt to: reprezentant użytkownika, walidator danych z formularza, warstwa zapisująca dane po rejestracji, jakiś ogólny filtr dla danych trafiających do bazy - a jedna z podstawowych zasad OOP brzmi: jeden obiekt - jedno zadanie. Nie bardzo rozumiem, co i jak mam jeszcze podzielić. Możesz to napisać łopatologiczniej? ![]() Poniżej kod po poprawkach, proszę o kolejne uwagi i wskazówki:)
Za dalsze uwagi, będę bardzo wdzięczny ![]() W kodzie, jak widać użyłem już PDO. Co jeszcze można/należałoby poprawić ? ![]() Ten post edytował szczypior 19.09.2010, 18:23:46 -------------------- Pytania i odpowiedzi na każdy temat - ZapytajSie.pl
Darmowe aliasy i liczniki odwiedzin - RFV.pl |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 23 Dołączył: 2.12.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kolego według mnie nie potrzebnie pakujesz całą funkcjonalność do jednej klasy.
Model MVC się kłania. Zrób osobno akcje, osobną klasę do walidacji danych, osobną do zapisu usera do bazy (tam metody zapisujace, a takze sprawdzajace dostepnosc jakiegos loginu). W ten sposób będzie to miało ręce i nogi ![]() ![]() -------------------- Masz swoje mieszkanie i chcesz je wynająć? Sprawdź ofertę Zarzadządzanie Najmem
WRONA.IT - pozycjonowanie stron www.ecyklopedia.pl |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 0 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Kolego według mnie nie potrzebnie pakujesz całą funkcjonalność do jednej klasy. Model MVC się kłania. Zrób osobno akcje, osobną klasę do walidacji danych, osobną do zapisu usera do bazy (tam metody zapisujace, a takze sprawdzajace dostepnosc jakiegos loginu). W ten sposób będzie to miało ręce i nogi ![]() ![]() Tzn mówisz, żeby zrobić osobno klasę do walidacji i zapisu, następnie wywoływać je po kolei?
Tak miałoby wyglądać ich wywołanie? -------------------- Pytania i odpowiedzi na każdy temat - ZapytajSie.pl
Darmowe aliasy i liczniki odwiedzin - RFV.pl |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 29.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Raczej nie chodzi o to.
Powinieneś zakupić jakąś książkę omawiającą OOP - na pewno dużo Ci da i odpowie na wiele pytań. Zobaczysz jak to wszystko wygląda ![]() Ten post edytował Ziem 20.09.2010, 09:13:56 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 07:32 |