![]() |
![]() |
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 06:28 |