Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Łączenie kilku klas lub routing metod
Forum PHP.pl > Forum > PHP > Object-oriented programming
piwko28
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 smile.gif
sobstel
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.
piwko28
Cytat(sobstel @ 10.09.2009, 22:43:13 ) *
próbować wykorzystać jakoś __call, ale ani to wydajne ani eleganckie.


Myślę, że to mi wystarczy - __call() i call_user_func() smile.gif
Metody prywatne i chronione będą potrzebne jedynie w granicach każdej z klas z osobna.

Dzięki serdeczne! smile.gif
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.