![]() ![]() |
Post
#1
|
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 |
W PHP5 jest możliwość przekazania do metody obiektu:
Niestety nie wiem jaki obiekt będzie przekazywany do obiektu, więc powyższe rozwiązanie się nie sprawdzi. Moje obecne rozwiązanie wygląda mniej więcej tak:
Czy jest możliwość przekazywania do metody dowolnego obiektu z wymuszeniem typu jak w pierwszym przypadku? Jedyne co przychodzi mi do głowy, to utworzenie abstrakcyjnej klasy, po której będą dziedziczyć wszystkie klasy, które będą przekazywane do metody. |
|
|
|
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
Stwórz interface - Klasa implementująca interfejs zyskuje dodatkowy typ, który możesz wymusić.
|
|
|
|
Post
#3
|
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 |
W zasadzie działa tak samo jak klasa abstrakcyjna. Niemniej jednak dzięki za odpowiedź. Interface wydaje się być lepszym rozwiązaniem niż klasa abstrakcyjna.
|
|
|
|
Post
#4
|
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
Jest o tyle lepszy, że możesz stworzyć kolekcję niepowiązanych klas, ale lepiej zobacz, czy faktycznie abstrakcja się nie nada... bo ma większe możliwości : )
|
|
|
|
Post
#5
|
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 |
W tym przypadku klasa abstrakcyjna się nie przyda, ponieważ mam wiele klas, które nie mają ze sobą nic wspólnego. Jedyne co je łączy, to fakt, że są przekazywane go innej klasy. Interface tutaj jest bardzo dobrym rozwiązaniem.
|
|
|
|
Post
#6
|
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%)
|
Cytat mam wiele klas, które nie mają ze sobą nic wspólnego. Jedyne co je łączy, to fakt, że są przekazywane go innej klasy. Jesli nie maja ze soba nic wspolnego to czenu sa przekazywane temu samemu obiektowi? Co konkretnie robi ta metoda? |
|
|
|
Post
#7
|
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 |
Klasy przekazywane do metody wyciągają różne dane i w różny sposób je zwracają. Czasami jest to array, czasami XML, innym razem bool, itd. Klasa odbierająca te dane, na podstawie ich typu, tworzy graficzną reprezentację tych danych. Może to być tabela HTML, treść e-maila, komunikat JavaScriptu. Wygląd generowany jest przy pomocy pomocniczych klas, np renderHTMLtable. Dzięki temu w klasie odbierającej dane nie mam śmietnika, a w plikach wyświetlających dane użytkownikowi (widoku) nie muszę za każdym razem zastanawiać się jakiej klasy użyć. Wygoda przede wszystkim (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 26.08.2006 Skąd: Szczecin Ostrzeżenie: (0%)
|
Czyli jednak klasy te są dość mocno powiązane, i wg mnie powinien być tu interfejs. Do tego on służy...
|
|
|
|
Post
#9
|
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 |
Jedyne co te klasy mają wspólnego, to to, że zwracają dane (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Zastosowałem interface i uzyskałem pożądany efekt.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 02:44 |