Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zidentyfikowaniem klas
Forum PHP.pl > Forum > PHP > Object-oriented programming
patryczakowy
Mam mały problem ze zidentyfikowaniem poprawnie klas chodzi mi o to jakie klasy utworzyć mój pomysł jest taki.
Klasa kategoria
Klasa Strona
Klasa Oferta
Klasa Strona i oferta będzie się składać (zawierać w sobie) klasę kategorię tak zwana agregacja
Klasa kategoria chyba oczywiste że jest to klasa reprezentująca drzewo dostępnych kategorii w systemie
Klasa Strona przedstawiająca podstrony serwisu
Klasa Oferta przedstawiająca oferty produktów
Czy taki podział jest prawidłowy ?
I jak w PHP realizuje się agregację?

Z góry wielkie dzięki za sugestie.
mike
Cytat(patryczakowy @ 30.09.2009, 10:19:21 ) *
I jak w PHP realizuje się agregację?
Tak samo jak w każdym innym języku.
Agregacja to zawieranie.
patryczakowy
jest jakiś specjalny znacznik np taki jak dla dziedziczenia czy na przykład w konstruktorze tworzy się obiekt innej klasy?
I jak z podziałem na klasy jest poprawny? Może takie problemy realizujecie w inny sposób ?
LBO
Cytat
jest jakiś specjalny znacznik np taki jak dla dziedziczenia czy na przykład w konstruktorze tworzy się obiekt innej klasy?


To jest bardzo proste i rozwiązuje się to jak w każdym innym języku.

  1. class B {}
  2.  
  3. class A
  4. {
  5. /**
  6.   * @var B
  7.   */
  8. protected $b;
  9.  
  10. /**
  11.   * @return A
  12.   */
  13. public function setB(B $b)
  14. {
  15. $this->b = $b;
  16. return $this; // fluent interface
  17. }
  18.  
  19. /**
  20.   * @return B
  21.   * @throws Exception
  22.   */
  23. public function getB()
  24. {
  25. if($this->hasB()) {
  26. return $this->b;
  27. }
  28. throw new Exception('message'); // in case B is not present
  29. }
  30.  
  31. /**
  32.   * @return boolean
  33.   */
  34. public function hasB()
  35. {
  36. return isset($this->b);
  37. }
  38. }


Mógłbyś również użyć konstruktora, aby wtłoczyć obiekt B do A... settery sa jednak wygodniejsze i tak polem to robić.
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.