Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [OOP][EXTENDS] Klasy usr
vokiel
post
Post #1





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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?
(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował vokiel 28.07.2008, 12:22:34
Go to the top of the page
+Quote Post
revyag
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

Ostrzeżenie: (0%)
-----


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





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 23.08.2025 - 16:52