Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> klasy (kolejny raz), dziedziczenie czy inaczej
Thaal
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 1.06.2003

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


Witam!!

Pisze sobie własnie taki mały system do obsługi artykułów. Do systemu maja dostęp dwie kategorie użytkowników: user i admin.
Do obsługi artykułów jest stworzona klasa 'articles', w ktorej mam takie metody jak:
- wyświetl liste
- wyswietl artykul
- dodaj artykuł
- zablokuj artykuł
I teraz pytanie:
Czy dziedziczenie (klsay 'admin' i 'user' dziedziczą z klasy 'articles') jest dobrym rozwiązaniem?? Bo w takim przypadku obiekt 'user' ma dostęp do metod, które nie są mu przeznaczone (i w rzeczywistości niewiele się różni od obiektu klasy 'admin', a w takim przypadku nie ma sensu tworzyc osobnej klasy 'user'). I żeby to obejść nalezy jeszcze raz zdefiniować metody 'dodaj artykuł' i 'zablokuj artykuł' w klasie user.
Drugie co mi do głowy przyszło to przekazanie utworzonego obiektu 'articles' do obiektów klas 'user' i 'admin'', a tam będą metody odpowiedzialne za wyświetlanie/edycje artykulów w zalezności od potrzeb (beda wywoływały metody obiektu 'articles').

Czy ktoś lepiej znający ode mnie temat mógłby jakos ustosunkować się do powyższego?? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

W drugim rozwiązaniu mozna jeszcze wyprowadzic klasę 'admin' z klasy 'user' - ale nad tym się jeszcze zastanowię (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)


P.S. jakby były problemy ze zrozumieniem tego co napisałem to przepraszam (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Thaal - a mi się wydaje, że ty nadal nie zreozumiałeś przykładu scannera dotyczącego drukarki.

Ja zrobiłbym to chyba tak
  1. <?php
  2.  
  3. class User
  4. {
  5. function isAdmin() { ... }
  6. }
  7.  
  8. class Article
  9. {
  10. function Article( &$User )
  11. {
  12.  $this->User =& $User ;
  13. }
  14. function add() 
  15. { 
  16. if( NOT $this->User->isAdmin() ) // forum nie wyświetla wykrzyknika (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
  17. {
  18.  trigger_error( 'No access ');
  19. }
  20. }
  21. function edit() { ... }
  22. function wyswietl liste() { ... }
  23. function wyświetl artykuł() { ... }
  24. ?>
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: 10.10.2025 - 18:37