![]() |
![]() |
![]()
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ć. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 19:22 |