![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 10.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam kilka klas i zmienną zawierającą instancję jakąś klasy.
Klasy: Klasa1 Klasa2 Klasa3 i zmienna: $klasa = new Klasa(); Problem: Sprawić, żeby $klasa będąca instancją klasy Klasa zawierała wszystkie metody klas Klasa1, Klasa2, Klasa3, a jeżeli ostatnio "dodana" klasa posiada metody o tych samych nazwach, żeby przeciążała. Nie wchodzi w grę dziedziczenie, ponieważ z założenia nie wiem jakie mam klasy "na wejściu" i w jakiej kolejności. Myślałem nad wzorcem Dekorator. Poszedłbym w dobrym kierunku? Jest możliwe zrobienie czegoś takiego? Ewentualnie może routing metod (jest coś takiego?). Wpisuję metodę, a Klasa szuka jej po kolei z klas na swojej liście. Proszę o sugestie ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
To o czym mówisz to wielodziedziczenie, czy też inne formy jak mixins, traits etc. PHP, jak na razie (są przymiarki do Traitsów) tego nie wspiera. Można kombinować (np. http://www.symfony-project.org/book/1_0/17...Symfony#Mixins), próbować wykorzystać jakoś __call, ale ani to wydajne ani eleganckie. Poza tym nie będziesz miał dostępu do chronionych i prywatnych metod załączanych klas (obiektów), chyba, że w każdej też specjalną obsługę dołożysz w __call, ale to już się robi niezły potworek.
-------------------- "If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 10.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 16:09 |