Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Łączenie kilku klas lub routing metod
piwko28
post 10.09.2009, 19:58:33
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 smile.gif
Go to the top of the page
+Quote Post
sobstel
post 10.09.2009, 23:43:13
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
Go to the top of the page
+Quote Post
piwko28
post 11.09.2009, 06:52:12
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 10.06.2005

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


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
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: 26.04.2024 - 09:49