[PHP] OOP Przysłonienie metody. |
[PHP] OOP Przysłonienie metody. |
31.12.2015, 16:25:33
Post
#1
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 22 Dołączył: 10.02.2015 Ostrzeżenie: (0%) |
Witam,
Próbuję rozwiązać problem, cały dzień myślę i nie mogę wymyślić. Chcę napisać prosty system logowania oparty o obserwatorów (w oparciu o SPL). Mam przykładowo klasę Subject.
I klasę logowania dziedziczącą po subject.
Dalej mam klasę obserwatora, ale chcę współpracować tylko z typem LoginObserver więc tworzę abstrakcyjną klasę.
I przykładową klasę.
I teraz sedno sprawy, klasa Login ma współpracować tylko z obserwatorami typu LoginObserver stąd w klasie Login warto by nadpisać metodę attach i zmienić rzutowanie na LoginObserver, oczywiście taki sposób nie działa, bo w interfejsie jest rzutowanie na SplObserver. Jednak nie chciałbym tworzyć kolejnych metod i "zaśmiecać". Nie wiem czy jest jakieś wyjście z tej sytuacji. Nie mogę sobie wyobrazić jak to zrobić. -------------------- |
|
|
31.12.2015, 16:59:28
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) |
A nie możesz utworzyć abstrakcyjnej klasy, dajmy na to User, po której będą dziedziczyć SplObserver oraz LoginObserver a w interfejsie dasz w definicji:
-------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
31.12.2015, 17:09:46
Post
#3
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 22 Dołączył: 10.02.2015 Ostrzeżenie: (0%) |
Nie wiem czy rozumiem twoją wypowiedź, ale interfejsów SplSubject oraz SplObserver nie mogę ruszyć, bo są wbudowane w język PHP. Nadpisując definicję w klasie potomnej dostanę oczywiście fatal error.
__EDIT__ Pomyślałem, że niech będzie tak jak jest a w klasie bazowej w metodzie attach rozwiążę to za pomocą ReflectionClass i tyle. Pytanie jeszcze jedno. Czy tworzenie abstrakcyjnej klasy bazowej, np.
Tylko w celu późniejszego wykorzystania do odczytania "tożsamości" obiektu (np w ReflectionClass metoda subclassof). Jest dobrą praktyką? Taka klasa będzie zupełnie pusta, używana jedynie jako "most" przy kompozycji w klasach. Ten post edytował Fred1485 31.12.2015, 19:07:31 -------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 14.05.2024 - 13:41 |