![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Chcialbym was prosic o opinie i sugestie nt. mojej pierwszej klasy podczsa nauki OOP. Co mozna w niej poprawic, co nalezaloby napisac inaczej. Poczatek czyli laczenie z baza i ustawianie sesji jest tylko tymczasowo. Prosze o informacje co i jak. Do czego moglby sluzyc destruktor w tej klasie? Do zerowania atrybutow? Wogole nie widze wiekszego sensu destruktora w tym przypadku - moze sie myle, prosze mnie wiec oswiecic.
PS: w metodzie sprawdzDostep $typ moze byc 0 lub 1 (0 dla wylaczania dostepu dla grup, 1 dla udostepnianiu dla wskazanych grup) i liste grup podajemy jako ciag liczb oddzielonych spacja. Ten post edytował phpion.com 17.07.2006, 20:18:36 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
![]() ![]() No to jedziemy ![]() 1. Używasz globalnej tablicy $_SESSION wewnatrz klasy, co jest "be". 2. Oznaczyłeś jako prywatne $login i $haslo. No dobra. to po co Ci te składowe, skoro nie zamierzasz z nich korzystać? Brakuje takich metod jak getUserName() oraz getUserPass(), których możesz użyć do pozyskania informacji o użytkowniku. Domyślam się, że potem korzystasz po prostu z $_SESSION... po co? Masz przeciez klasę i tam masz dane uzytkownika. Wykorzystaj to. Btw. Pierwsza klasa - Gratz ![]() Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
-Gość- |
![]()
Post
#3
|
Goście ![]() |
Masz na mysli takie cos?
W sumie to robie w konstruktorze... uzywanie $_SESSION w srodku klasy jest 'be' to jak mozna inaczej (lepiej) to rozwiazac? Zastosowanie klasy (klaski ;-) ) podalem w 2 ostatnich linijkach skryptu. Public, private, protected - jak najlepiej ustawic var'y klasy - nie do konca jeszcze czuje roznice zastosowac (teorie znam). |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
To bylem ja - nie wiem dlaczego mnie wylogowalo...
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat 1. Używasz globalnej tablicy $_SESSION wewnatrz klasy, co jest "be". To nie jest tablica globalna... To jest tablica superglobalna, a to nie jest takie bardzo "be"... Ja bym zmienił modyfikatory private na protected. Czasami przydaje się dziedziczenie przy takich klasach. Tak jak napisał Cysiaczek, napisz funkcje dostępu. Poza tym sesje są bezpieczne i nie musisz sprawdzać czy użytkownik istnieje co wywołanie strony. Co innego, gdybyś dane pozyskiwał z ciastka, które użytkownik może modyfikować. Inna uwaga. Zapomnij o exitach w klasach! Nigdy czegoś takiego się nie robi. Możesz wyrzucić wyjątek, który sobie wyłapiesz i zrobisz wtedy co chcesz. Tyle ode mnie. Nie jest źle ![]() -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
@Ludvik - no dobra - nie takie bardzo "be", a jesli zechcę sobie (nie pytaj dlaczego) przenosić login i hasełko przez $_GET ? Czy to tak wiele kosztuje przekazanie $_SESSION["user"] i "pass" do konstruktora?
![]() -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście, że można. Tak nawet lepiej będzie. Ale to tylko koncepcja autora. Jeżeli chodzi o głębszą interpretację tej klasy to bym podzielił ją na dwie, albo nawet trzy, bo teraz za dużo ma "na głowie". Zajmuje się przenoszeniem danych użytkownika, pobieraniem ich oraz autoryzacją. Nie tędy droga. Jedna klasa musi przechowywać same dane i udostępniać interfejs, dzięki któremu można na nich operować. Druga klasa odpowiada za pobranie danych użytkownika z bazy i stworzenie obiektu. Trzecia klasa operuje na obiekcie użytkownik i porównuje jego prawa dostępu do wymagań. Tak wszystko będzie bardziej elastyczne. Ale nie można oczekiwać elastyczności po pierwszych rozwiązaniach...
Do autora wątku: Atrybuty klasy wypada izolować, aby zachować nad nimi kotrolę. Dostęp najlepiej zapewnić przez publiczne metody. Radzę zapoznać się z lekturą związaną z OOP. Np. Headfirst Design Patterns - dziwnie napisana książka, ale łatwo przyswajalna. Nie jest zła... -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
1.
Cytat Brakuje takich metod jak getUserName() oraz getUserPass() Ja bym to załatwił metodami magicznymi __get i __set. 2. co to będzie jak metodę zawierającą ten kod:
wywoła się po wysłaniu nagłówka do przeglądarki? Spowoduje błąd. Tak jak podpowiadają koledzy, lepszym rozwiązaniem w tym wypadku będą wyjątki. 3. metody też mogą być public/protected/private 4.
A co będzie jeśli w $this->login będzie login' OR 1 ? Mam nadzieję, że to gdzieś sprawdzasz (np. przy pomocy mysql_escape_string) Zamiast w sesji przekazywać zmienne do klasy - przekazuj je poprzez konstruktora. 5. Troszkę dla mnie dziwne jest pisanie metody, która ma za zadnie sprawdzenie czy użytkownik ma dostęp i jeśli nie to przładowuje się na inną stronę, a jeśli ma dostęp to "puszcza" skrypt. Masz teraz tak:
Jeśli brak dostępu to w //2 przejdzie do innej strony. Jeśli jest dostęp to "puści" Ja bym to zrobił raczej tak, że metoda sprawdzDostep() zwraca czy jest dostęp czy brak dostępu:
Na pierwszą funkcję jest na prawdę dobrze ![]() ![]() Ten post edytował TomASS 17.07.2006, 22:49:42 -------------------- |
|
|
-Gość- |
![]()
Post
#9
|
Goście ![]() |
Ok, wszystko dokladnie przeczytalem. Wlasnie chodzilo mi o to jak to wszystko zgrabnie napsiac (ten podzial na 3 klasy - wlasnie o takie rady mi chodzilo!). Tak jak pisalem - jest to 1 klasa i w zasadzie wszystko bym do niej wpakowal
![]() Cytat Czy to tak wiele kosztuje przekazanie $_SESSION["user"] i "pass" do konstruktora hmmm a to tak nie jest teraz? Co do tego ze exit nie sa zbyt mile widziale w klasach - nie wiedzialem, dziekuje za info. Filtrowanie danych itd. na razie nie ma bo jak widac to klasa testowa z danymi umieszczonymi przeze mnie w kodzie wiec tym sie na razie zajmowal nie bede. Chodzi mi o sama klase. Natomiast co to samego dzialania skryptu: Cytat
Chcialem wlasnie to zrobic w jak najkrotszy sposob, zeby nie trzeba bylo wstawiac duzo kodu na kazdej chronionej podstronie. Stad takie rozwiazanie z exitem w srodku... |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Znowu mnie kurAW wylogowalo
![]() --- Jak się kulturalnie odezwać nie potrafisz to nic nie pisz. To jest forum publiczne a nie ławka pod blokiem. Następnym razem dostaniesz ostrzeżenie i zakaz postowania na jakiś czas. ~mike_mech |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
@phpion - Nie - teraz $_SESSION nie jest przekazana, tylko użyta w konstruktorze. Przekazać trzeba jako argument konstruktora.
![]() -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
No racja
![]() |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
ja bym popracował nad nazewnictwem zmiennych , klass itp itd
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Tzn? wszystko mam jechac po angielsku?
![]() |
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Niekonieczne, choć lepiej
![]() ![]() -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
i ja dozuce swoje 5 groszy:
![]() Skorzystaj z okazji ze jeszcze nie masz zlych przyzwyczajen i nabiez dobrych, jak np komentowanie wszystkiego w formacie phpDoc pozdrawian |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 10:43 |