Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [OOP][EXTENDS] Klasy usr
Forum PHP.pl > Forum > PHP > Object-oriented programming
vokiel
Mam taki problem: stworzyłem sobie abstrakcyjną klasę usr oraz 2 dziedziczące po niej: worker i adm.
Wygląda to mniej więcej tak:
  1. <?php
  2. abstract class user{
  3. protected $_id;
  4. protected $_privileges;
  5. protected $_is_logged;
  6. protected $_login_string;
  7. protected $_errors = array();
  8.  
  9. /**
  10.  * Konstruktor
  11.  *
  12.  */
  13. public function __construct($login_string){
  14. $this->_login_string = $login_string;
  15. // logowanie, sprawdzenie uprawnien
  16.  
  17. } // end of __construct 
  18.  
  19. /**
  20.  * Sprawdzenie czy usr jest zalogowany
  21.  *
  22.  * @return boolean $this->_is_logged
  23.  */
  24. public function isLogged(){
  25. return $this->_is_logged;
  26. } // end of isLogged
  27.  
  28. /**
  29.  * Pobranie uprawnień danego usr
  30.  *
  31.  * @return int $this->_usr_privileges;
  32.  */
  33. public function getPrivileges(){
  34. return $this->_usr_privileges;
  35. } // end of getPrivileges
  36.  
  37. /**
  38.  * Pobranie błędów
  39.  *
  40.  * @return array $this->_errors;
  41.  */
  42. public function getErrors(){
  43. return $this->_errors;
  44. } // end of getErrors
  45. } // end of user class
  46.  
  47. class worker extends user {
  48.  
  49. public function __construct($login_string){
  50. parent::__construct($login_string);
  51. }
  52.  
  53. /**
  54.  * Rozpoczęcie pracy
  55.  *
  56.  */
  57. public function in(){
  58. // dodanie do bazy wejscia
  59. } // end of in
  60.  
  61. /**
  62.  * Zakończenie pracy
  63.  *
  64.  */
  65. public function out(){
  66. // dodanie do bazy wyjscia
  67. } // end of out
  68.  
  69. }// end of worker class
  70.  
  71. class adm extends user {
  72.  
  73. public function __construct($login_string){
  74. parent::__construct($login_string);
  75. }
  76. public function addWorker(){}
  77. public function saveWorker(){}
  78. public function editWorker(){} 
  79.  
  80. } // end of adm class
  81. ?>


I teraz tak: mam formularz logowania. No i nie wiem której klasy tworzyć egzemplarz. Bo na początku nie wiemy czy loguje sie usr, czy adm.
Mogę robić tak, że tworzę obiekt klasy worker, sprawdzam uprawnienia, jesli są odpowiednie, to tworzę obiekt adm, a usuwam worker. Ale moim zdaniem to jest dość głupie, a na pewno niepoprawne.

Może ktoś z dobrym sercem pomoże?
winksmiley.jpg
revyag
Zakładam że operujesz na jakiejś bazie danych bo inaczej nie widzę sensu w tym. Ja bym zidentyfikował typ usera na podstawie loginu i hasła, baza danych zwróci Ci odpowiednie dane i na ich podstawie stworzysz sobie obiekt, pobierzesz uprawnienia.
vokiel
Tak, na bazie.
Czyli przed stworzeniem obiektu worker || adm sprawdzić w bazie kim jest dany user...

To może dobrym pomyslem byłoby stworzenie klasy logowania, która by sprawdzala dane usr, logowala go (jeśli byłyby poprawne), i wtedy tworzyla obiekt odpowiedniej klasy usr lub adm w zaleznosci od typu uzytkownika...

Dzięki za naprowadzenie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.