Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> EventDispatcher, przesłanianie metody addListener w dziedziczeniu
adbacz
post
Post #1





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Mam klasę EventDispatcher, w której znajduje się metoda addListener:
  1. class EventDispatcher
  2. {
  3. private $listeners = array();
  4. public function addListener($name, EventListener $listener)
  5. {
  6. }
  7. }

I inną klasę, która ma podobne zadanie, tylko zmienia się ciało funkcji addListener oraz notify (zmienia się cało, nie jej parametry (nie wklejam jej tutaj, bo nie o to chodzi), dlatego potrzebuję klasy dziedziczącej po EventDispacher):
  1. class PluginEventDispatcher extends EventDispatcher
  2. {
  3. private $listeners = array();
  4. public function addListener($name, PluginEventListener $listener)
  5. {
  6. }
  7. }

No i dwa interfejsy:
  1. interface EventListener
  2. {
  3. // ...
  4. }
  5.  
  6. interface PluginEventListener
  7. {
  8. // ...
  9. }


Problem zaczyna się gdy odpalam skrypt. Wyrzuca mi info, że "Strict standards: Declaration of PluginEventDispatcher::addListener() should be compatible with that of EventDispatcher::addListener()". Wiem, że chodzi o metodę addListener i jej drugi parametr (inne nazwy interfejsów), ale myślałem, że gdy przesłania się metodę, to ta przesłaniana jest całkowicie nadpisywana przez przesłoniętą (a raczej na odwrót), a nie, że muszą być kompatybilne.

Jak rozwiązać problem typowiania innych interfejsów?


EDIT:
Już zamiast interfejsów próbowałem użyć klasy EventListener oraz PluginEventListener i dziedziczenia tych klas, ale niestety wyskakuje ten sam błąd. Można to jakoś inaczej rozwiązać?

Ten post edytował adbacz 20.08.2014, 16:06:45
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 20:25