Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php OOP] Prosba o opinie nt. pierwszej klasy
phpion
post
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.
  1. <?php
  2. $sql = mysql_connect("localhost", "root", "");
  3. mysql_select_db("logowanie");
  4.  
  5.  
  6. $_SESSION['login'] = "phpion";
  7. $_SESSION['haslo'] = "haslo";
  8.  
  9. class Uzytkownik
  10. {
  11. private $login;
  12. private $haslo;
  13. private $grupa;
  14. private $zalogowany;
  15. private $dostep;
  16.  
  17. function __construct()
  18. {
  19. $this->login = (isset($_SESSION['login'])) ? $_SESSION['login'] : NULL;
  20. $this->haslo = (isset($_SESSION['haslo'])) ? $_SESSION['haslo'] : NULL;
  21. $this->grupa = 0;
  22. $this->zalogowany = $this->dostep = FALSE;
  23. }
  24.  
  25. function sprawdzZalogowanie()
  26. {
  27. if ($this->login != NULL && $this->haslo != NULL)
  28. {
  29. $q = "SELECT grupa FROM uzytkownicy WHERE BINARY login='".$this->login."' AND BINARY haslo='".$this->haslo."' AND stan='1'";
  30. $q = mysql_query($q);
  31.  
  32. if (mysql_num_rows($q) > 0)
  33. {
  34. $r = mysql_fetch_row($q);
  35.  
  36. $this->grupa = $r[0];
  37. $this->zalogowany = TRUE;
  38. }
  39. }
  40. }
  41.  
  42. function sprawdzDostep($typ, $lista)
  43. {
  44. $this->sprawdzZalogowanie();
  45.  
  46. if ($this->zalogowany == TRUE && $this->grupa != 0)
  47. {
  48. $tablica = explode(" ", $lista);
  49.  
  50. if (($typ == 1 && in_array($this->grupa, $tablica) || ($typ == 0 && !in_array($this->grupa, $tablica))))
  51. $this->dostep = TRUE;
  52. }
  53.  
  54. if ($this->dostep != TRUE)
  55. {
  56. header("Location: accessDenied.php");
  57. }
  58. }
  59. }
  60.  
  61. $uzytkownik = new Uzytkownik();
  62. $uzytkownik->sprawdzDostep(0, "1 2");
  63. ?>
  64. Tajna tresc

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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Ludvik
post
Post #2





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...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 06:05