Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 24.12.2009 Ostrzeżenie: (0%)
|
Witam,
Dopiero zaczynam przygodę z OOP. Napisałem pierwszą taką klasę:
Mam 2 pytania: 1. W mojej klasie metody wyświetlające formularz i sprawdzające go są typu private, metodą, która to wszystko ogarnia jest metoda logIn(). Czy to dobry pomysł? Czy może lepiej wszystkie te metody ustawić jako public i całość sprawdzać poza klasą po utworzeniu obiektu? 2. Czy dobrym pomysłem jest tworzenie metod wyświetlających formularze czy raczej do takich rzeczy się funkcji nie tworzy? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
Moim zdaniem klasa odpowiedzialna za logowanie powinna zawierać tylko logikę związaną z autentykacją użytkownika. U Ciebie wydaje się, że wszystko jest pomieszane ze sobą:
- masz klasę o nazwie Users - nazwa mylnie sugeruje, że klasa jest odpowiedzialna za zarządzanie jakąś kolekcją użytkowników - ta klasa - oprócz wyplucia formularza - kompletnie nic nie robi - walidacja formularza tylko na zasadzie czy wartości z pól formularza: login i pass są nie puste - to za mało (sprawdzaj długość loginu i hasła) - metoda showLogForm jest kompletnie nieelastyczna, narzucasz z góry nazewnictwo pól formularza, nie ma możliwości zmiany atrybutu action, pole dla hasła powinno mieć typ password - ciało metod isSent i isFilled można byłoby zastąpić dwiema liniami kodu - Rozumiem, że klasę będziesz rozbudowywał (jako, że dziedziczysz z klasy mysqli) Ad.1 Sam mechanizm działania klasy jak najbardziej powinien być ukryty poprzez zastosowanie hermetyzacji, jednak zastanowiłbym się nad rozluźnieniem dostępu do metod z private do protected, dzięki temu można będzie je odziedziczyć w klasach potomnych (w przypadku private - nie można). Metody o dostępie prywatnym powinny wykonywać kod, którego nie chcemy udostępniać na zewnątrz, ani nie chcemy, aby klasy wyprowadzane z naszej klasy dziedziczyły określone zachowanie (i/lub właściwości). Ad. 2 To naprawdę zależy od wielu czynników, ale generalnie nie powinno się umieszczać htmla w klasach. // edit chyba zupełnie zapomniałeś o jednej z podstawowych zasad bezpieczeństwa - nigdy nie ufać danym pochodzącym od użytkowników. //edit2 Na razie nie ma jeszcze czego oceniać, dodaj konkretną implementację logowania + zabezpieczenia przed potencjalnymi zagrożeniami. Ten post edytował darko 2.03.2010, 11:27:35 |
|
|
|
Bent Logowanie (pierwsza klasa) 26.02.2010, 17:16:07
MateuszScirka Sam ucze sie OOP ale wg mnie nie powinno byc w zad... 26.02.2010, 17:47:38
Bent CytatNo i nie wiem po co przypisales atrybutowi na... 26.02.2010, 18:23:12
MateuszScirka No ok, ale po co ktos by chcial zmieniac name pol?... 26.02.2010, 19:14:17 ![]() ![]() |
|
Aktualny czas: 11.06.2026 - 01:22 |