Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]kompozycje
-ddddf-
post 11.12.2013, 10:53:41
Post #1





Goście







  1. class Foo
  2. {
  3. public $x;
  4. public function __construct()
  5. {
  6. $this->x = new X($this);
  7. //var_dump($this->x);
  8. }
  9.  
  10. public function footest()
  11. {
  12. return $this->x->test();
  13. }
  14. }
  15.  
  16.  
  17.  
  18. class X
  19. {
  20. public function __construct(Foo $c)
  21. {
  22. //echo '<pre>';
  23. // print_r($c);
  24. }
  25.  
  26. public function test()
  27. {
  28. return 'Xtest';
  29. }
  30.  
  31. }
  32.  
  33.  
  34. $a = new Foo;
  35. echo $a-> footest();


Czy to jest poprawna kompozycja i czy kompozycje polegają a tym, aby klasa X która ma jakieś ważne dane dla klasy Foo nie mogłaby mieć własnej instancji?

Czyli jeśli mam klasę Login która ma pobierać dane z klasy User, która sprawdza użytkownika, to klasa User ma w konstruktorze mieć klasę Login?

Nie bardzo ogarniam samo określenie kompozycji i to gdzie i w jakich przypadkach je stosować, a nigdzie nie znalazłem konkretnego wyjaśnienia, w języku PL w ogóle ich nie ma. Są tylko przykłady, jak powyższy ale nic poza tym.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Methestel
post 11.12.2013, 14:35:18
Post #2





Grupa: Zarejestrowani
Postów: 46
Pomógł: 10
Dołączył: 30.06.2008

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


Kompozycja jest szczególnym przypadkiem agregacji.
Tutaj jest to dość dobrze wyjaśnione: Agregacja (programowanie obiektowe)

W PHP-ie nie masz możliwości zrealizować kompozycji bo nie ma zagnieżdzania klas.

Odnośnie twojego kodu:
- jest to agregacja (obiekty klasy Foo przechowują obiekt klasy X)
- nie jest to kompozycja (bo obiekt klasy X i Foo mogą istnieć niezależnie)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 01:04