class EventDispatcher { public function addListener($name, EventListener $listener) { } }
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):
class PluginEventDispatcher extends EventDispatcher { public function addListener($name, PluginEventListener $listener) { } }
No i dwa interfejsy:
interface EventListener { // ... } interface PluginEventListener { // ... }
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ć?